All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 31
    functionName: gb_init
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gb_init()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/fuzz_header.h:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: gb_cleanup
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void gb_cleanup()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_header.h:46,1
    - Dst: memcpy
      Src: /src/fuzz_header.h:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - data
    - size
    - to_get
    argTypes:
    - uint8_t**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: get_len_null_terminated
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    linkageType: ''
    returnType: char
    signature: char *get_len_null_terminated(const uint8_t **data, size_t *size, size_t
      to_get)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_len_null_terminated
      Src: /src/fuzz_header.h:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: get_null_terminated
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - get_len_null_terminated
    linkageType: ''
    returnType: char
    signature: char *get_null_terminated(const uint8_t **data, size_t *size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_header.h:65,1
    - Dst: memcpy
      Src: /src/fuzz_header.h:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - data
    - size
    - to_get
    argTypes:
    - uint8_t**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 74
    functionName: gb_get_random_data
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    linkageType: ''
    returnType: char
    signature: char *gb_get_random_data(const uint8_t **data, size_t *size, size_t
      to_get)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_null_terminated
      Src: /src/fuzz_header.h:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: gb_get_null_terminated
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - get_null_terminated
    linkageType: ''
    returnType: char
    signature: char *gb_get_null_terminated(const uint8_t **data, size_t *size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_len_null_terminated
      Src: /src/fuzz_header.h:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - data
    - size
    - to_get
    argTypes:
    - uint8_t**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: gb_get_len_null_terminated
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - get_len_null_terminated
    linkageType: ''
    returnType: char
    signature: char *gb_get_len_null_terminated(const uint8_t **data, size_t *size,
      size_t to_get)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/fuzz_header.h:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: gb_alloc_data
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: char
    signature: char *gb_alloc_data(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: get_short
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: short
    signature: short get_short(const uint8_t **data, size_t *size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: get_int
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_int(const uint8_t **data, size_t *size)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:136,1
    - Dst: memcpy
      Src: /src/fuzz_header.h:141,1
    - Dst: ioctl
      Src: /src/fuzz_header.h:173,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - fd
    - request
    - arg
    argTypes:
    - int
    - unsigned long
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 175
    functionName: fuzz_ioctl
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - memcpy
    - ioctl
    - gb_get_random_data
    linkageType: ''
    returnType: int
    signature: int fuzz_ioctl(int fd, unsigned long request, void *arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/fuzz_header.h:198,1
    - Dst: memset
      Src: /src/fuzz_header.h:224,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - sockfd
    - msg
    - flags
    argTypes:
    - int
    - struct msghdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 228
    functionName: fuzz_recvmsg
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - memset
    - CMSG_SPACE
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t fuzz_recvmsg(int sockfd, struct msghdr *msg, int flags)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:241,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:242,1
    - Dst: get_int
      Src: /src/fuzz_header.h:245,1
    - Dst: get_int
      Src: /src/fuzz_header.h:246,1
    - Dst: get_int
      Src: /src/fuzz_header.h:247,1
    - Dst: get_int
      Src: /src/fuzz_header.h:248,1
    - Dst: gb_get_len_null_terminated
      Src: /src/fuzz_header.h:251,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:255,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:256,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:257,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:258,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:259,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:260,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:262,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:263,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:264,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:265,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:266,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:267,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:278,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:280,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:281,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:282,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:283,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:284,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:288,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:289,1
    - Dst: get_int
      Src: /src/fuzz_header.h:290,1
    - Dst: get_int
      Src: /src/fuzz_header.h:291,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:301,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:302,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:306,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:307,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:309,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:310,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:315,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:316,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:317,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:319,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:320,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:321,1
    - Dst: get_int
      Src: /src/fuzz_header.h:327,1
    - Dst: get_int
      Src: /src/fuzz_header.h:328,1
    - Dst: get_int
      Src: /src/fuzz_header.h:329,1
    - Dst: get_int
      Src: /src/fuzz_header.h:330,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:339,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:340,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:341,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:343,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:344,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:345,1
    - Dst: get_short
      Src: /src/fuzz_header.h:349,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:353,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:354,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:355,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:357,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:358,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:359,1
    - Dst: get_short
      Src: /src/fuzz_header.h:363,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:372,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:373,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:375,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:376,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:383,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:384,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:386,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:387,1
    - Dst: strlen
      Src: /src/fuzz_header.h:389,1
    - Dst: strlen
      Src: /src/fuzz_header.h:394,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:400,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:402,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:404,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:405,1
    - Dst: strlen
      Src: /src/fuzz_header.h:407,1
    - Dst: strlen
      Src: /src/fuzz_header.h:412,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:420,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:421,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:423,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:424,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:432,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:433,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:435,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:436,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:444,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:445,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:447,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:448,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:456,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:457,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:459,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:460,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:468,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:469,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:471,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:472,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:481,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:482,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:483,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:485,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:486,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:487,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:495,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:496,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:498,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:499,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:508,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:510,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:512,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:513,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:515,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:516,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:517,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:518,1
    - Dst: gb_get_random_data
      Src: /src/fuzz_header.h:530,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:532,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:534,1
    - Dst: gb_get_null_terminated
      Src: /src/fuzz_header.h:535,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:537,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:538,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:539,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:540,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:554,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:555,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:556,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:558,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:559,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:560,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:569,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:570,1
    - Dst: gb_alloc_data
      Src: /src/fuzz_header.h:579,1
    - Dst: CLEAN_IF_NULL
      Src: /src/fuzz_header.h:580,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 165
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 232
    functionDepth: 3
    functionLinenumber: 232
    functionLinenumberEnd: 592
    functionName: init_daemon
    functionSourceFile: /src/fuzz_header.h
    functionUses: 0
    functionsReached:
    - gb_get_null_terminated
    - gb_get_random_data
    - gb_alloc_data
    - get_int
    - gb_get_len_null_terminated
    - CLEAN_IF_NULL
    - get_short
    - strlen
    linkageType: ''
    returnType: int
    signature: int init_daemon(const uint8_t **data2, size_t *size2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    functionName: CLEAN_IF_NULL
    functionSourceFile: /src/fuzz_header.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CLEAN_IF_NULL(arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_len_null_terminated
      Src: /src/fuzz_rfc1035.c:23,1
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:26,1
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:27,1
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:28,1
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:31,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:32,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:33,1
    - Dst: extract_addresses
      Src: /src/fuzz_rfc1035.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 40
    functionName: FuzzExtractTheAddress
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - extract_addresses
    - memset
    - get_len_null_terminated
    - malloc
    - get_int
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FuzzExtractTheAddress(const uint8_t **data2, size_t *size2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:54,1
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:55,1
    - Dst: get_int
      Src: /src/fuzz_rfc1035.c:56,1
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:59,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:60,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:61,1
    - Dst: answer_request
      Src: /src/fuzz_rfc1035.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 67
    functionName: FuzzAnswerTheRequest
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - memset
    - malloc
    - get_int
    - memcpy
    - answer_request
    linkageType: ''
    returnType: void
    signature: void FuzzAnswerTheRequest(const uint8_t **data2, size_t *size2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:78,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:79,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:80,1
    - Dst: check_for_ignored_address
      Src: /src/fuzz_rfc1035.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: FuzzIgnoredAddress
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - malloc
    - check_for_ignored_address
    linkageType: ''
    returnType: void
    signature: void FuzzIgnoredAddress(const uint8_t **data2, size_t *size2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:95,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:96,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:97,1
    - Dst: check_for_local_domain
      Src: /src/fuzz_rfc1035.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 103
    functionName: FuzzCheckLocalDomain
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - malloc
    - check_for_local_domain
    linkageType: ''
    returnType: void
    signature: void FuzzCheckLocalDomain(const uint8_t **data2, size_t *size2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_len_null_terminated
      Src: /src/fuzz_rfc1035.c:113,1
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:121,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:122,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:123,1
    - Dst: extract_request
      Src: /src/fuzz_rfc1035.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 130
    functionName: FuzzExtractRequest
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - memset
    - extract_request
    - get_len_null_terminated
    - malloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FuzzExtractRequest(const uint8_t **data2, size_t *size2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_null_terminated
      Src: /src/fuzz_rfc1035.c:141,1
    - Dst: in_arpa_name_2_addr
      Src: /src/fuzz_rfc1035.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 150
    functionName: FuzzArpaName2Addr
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - get_null_terminated
    - in_arpa_name_2_addr
    linkageType: ''
    returnType: void
    signature: void FuzzArpaName2Addr(const uint8_t **data2, size_t *size2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:156,1
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:159,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:160,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:161,1
    - Dst: resize_packet
      Src: /src/fuzz_rfc1035.c:165,1
    - Dst: free
      Src: /src/fuzz_rfc1035.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 168
    functionName: FuzzResizePacket
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - memset
    - malloc
    - resize_packet
    - free
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FuzzResizePacket(const uint8_t **data2, size_t *size2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:175,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:176,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:177,1
    - Dst: setup_reply
      Src: /src/fuzz_rfc1035.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 183
    functionName: FuzzSetupReply
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - setup_reply
    - memcpy
    - memset
    - malloc
    linkageType: ''
    returnType: void
    signature: void FuzzSetupReply(const uint8_t **data2, size_t *size2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gb_get_len_null_terminated
      Src: /src/fuzz_rfc1035.c:190,1
    - Dst: malloc
      Src: /src/fuzz_rfc1035.c:197,1
    - Dst: memset
      Src: /src/fuzz_rfc1035.c:198,1
    - Dst: memcpy
      Src: /src/fuzz_rfc1035.c:199,1
    - Dst: check_for_bogus_wildcard
      Src: /src/fuzz_rfc1035.c:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 206
    functionName: FuzzCheckForBogusWildcard
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - check_for_bogus_wildcard
    - memset
    - malloc
    - gb_get_len_null_terminated
    - memcpy
    linkageType: ''
    returnType: void
    signature: void FuzzCheckForBogusWildcard(const uint8_t **data2, size_t *size2)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: gb_init
      Src: /src/fuzz_rfc1035.c:221,1
    - Dst: init_daemon
      Src: /src/fuzz_rfc1035.c:228,1
    - Dst: cache_init
      Src: /src/fuzz_rfc1035.c:231,1
    - Dst: blockdata_init
      Src: /src/fuzz_rfc1035.c:232,1
    - Dst: FuzzExtractTheAddress
      Src: /src/fuzz_rfc1035.c:237,1
    - Dst: FuzzAnswerTheRequest
      Src: /src/fuzz_rfc1035.c:240,1
    - Dst: FuzzCheckLocalDomain
      Src: /src/fuzz_rfc1035.c:243,1
    - Dst: FuzzExtractRequest
      Src: /src/fuzz_rfc1035.c:246,1
    - Dst: FuzzArpaName2Addr
      Src: /src/fuzz_rfc1035.c:249,1
    - Dst: FuzzResizePacket
      Src: /src/fuzz_rfc1035.c:252,1
    - Dst: FuzzSetupReply
      Src: /src/fuzz_rfc1035.c:255,1
    - Dst: FuzzCheckForBogusWildcard
      Src: /src/fuzz_rfc1035.c:258,1
    - Dst: FuzzIgnoredAddress
      Src: /src/fuzz_rfc1035.c:261,1
    - Dst: cache_start_insert
      Src: /src/fuzz_rfc1035.c:263,1
    - Dst: fuzz_blockdata_cleanup
      Src: /src/fuzz_rfc1035.c:264,1
    - Dst: gb_cleanup
      Src: /src/fuzz_rfc1035.c:268,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 213
    functionDepth: 4
    functionLinenumber: 213
    functionLinenumberEnd: 271
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzz_rfc1035.c
    functionUses: 0
    functionsReached:
    - FuzzArpaName2Addr
    - FuzzAnswerTheRequest
    - cache_init
    - FuzzCheckLocalDomain
    - FuzzExtractRequest
    - FuzzIgnoredAddress
    - FuzzExtractTheAddress
    - fuzz_blockdata_cleanup
    - FuzzCheckForBogusWildcard
    - init_daemon
    - gb_cleanup
    - FuzzResizePacket
    - gb_init
    - cache_start_insert
    - blockdata_init
    - FuzzSetupReply
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_dhcp.c:24,1
    - Dst: malloc
      Src: /src/fuzz_dhcp.c:27,1
    - Dst: free
      Src: /src/fuzz_dhcp.c:29,1
    - Dst: dhcp_packet
      Src: /src/fuzz_dhcp.c:41,1
    - Dst: free
      Src: /src/fuzz_dhcp.c:45,1
    - Dst: free
      Src: /src/fuzz_dhcp.c:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 47
    functionName: FuzzDhcp
    functionSourceFile: /src/fuzz_dhcp.c
    functionUses: 0
    functionsReached:
    - free
    - dhcp_packet
    - malloc
    linkageType: ''
    returnType: void
    signature: void FuzzDhcp(const uint8_t **data2, size_t *size2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gb_init
      Src: /src/fuzz_dhcp.c:59,1
    - Dst: init_daemon
      Src: /src/fuzz_dhcp.c:66,1
    - Dst: cache_init
      Src: /src/fuzz_dhcp.c:69,1
    - Dst: blockdata_init
      Src: /src/fuzz_dhcp.c:70,1
    - Dst: FuzzDhcp
      Src: /src/fuzz_dhcp.c:72,1
    - Dst: cache_start_insert
      Src: /src/fuzz_dhcp.c:74,1
    - Dst: fuzz_blockdata_cleanup
      Src: /src/fuzz_dhcp.c:75,1
    - Dst: gb_cleanup
      Src: /src/fuzz_dhcp.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 52
    functionDepth: 4
    functionLinenumber: 52
    functionLinenumberEnd: 81
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzz_dhcp.c
    functionUses: 0
    functionsReached:
    - cache_init
    - fuzz_blockdata_cleanup
    - FuzzDhcp
    - init_daemon
    - gb_cleanup
    - gb_init
    - cache_start_insert
    - blockdata_init
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/fuzz_dhcp6.c:27,1
    - Dst: malloc
      Src: /src/fuzz_dhcp6.c:30,1
    - Dst: free
      Src: /src/fuzz_dhcp6.c:32,1
    - Dst: dhcp6_packet
      Src: /src/fuzz_dhcp6.c:44,1
    - Dst: free
      Src: /src/fuzz_dhcp6.c:46,1
    - Dst: free
      Src: /src/fuzz_dhcp6.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 48
    functionName: FuzzDhcp
    functionSourceFile: /src/fuzz_dhcp6.c
    functionUses: 1
    functionsReached:
    - free
    - dhcp6_packet
    - malloc
    linkageType: ''
    returnType: void
    signature: void FuzzDhcp(const uint8_t **data2, size_t *size2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gb_init
      Src: /src/fuzz_dhcp6.c:60,1
    - Dst: init_daemon
      Src: /src/fuzz_dhcp6.c:67,1
    - Dst: cache_init
      Src: /src/fuzz_dhcp6.c:70,1
    - Dst: blockdata_init
      Src: /src/fuzz_dhcp6.c:71,1
    - Dst: FuzzDhcp
      Src: /src/fuzz_dhcp6.c:73,1
    - Dst: cache_start_insert
      Src: /src/fuzz_dhcp6.c:75,1
    - Dst: fuzz_blockdata_cleanup
      Src: /src/fuzz_dhcp6.c:76,1
    - Dst: gb_cleanup
      Src: /src/fuzz_dhcp6.c:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 83
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzz_dhcp6.c
    functionUses: 0
    functionsReached:
    - cache_init
    - fuzz_blockdata_cleanup
    - FuzzDhcp
    - init_daemon
    - gb_cleanup
    - gb_init
    - cache_start_insert
    - blockdata_init
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_int
      Src: /src/fuzz_auth.c:22,1
    - Dst: get_int
      Src: /src/fuzz_auth.c:23,1
    - Dst: get_int
      Src: /src/fuzz_auth.c:24,1
    - Dst: malloc
      Src: /src/fuzz_auth.c:27,1
    - Dst: memset
      Src: /src/fuzz_auth.c:28,1
    - Dst: memcpy
      Src: /src/fuzz_auth.c:29,1
    - Dst: answer_auth
      Src: /src/fuzz_auth.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data2
    - size2
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 37
    functionName: FuzzAuth
    functionSourceFile: /src/fuzz_auth.c
    functionUses: 0
    functionsReached:
    - memset
    - malloc
    - get_int
    - memcpy
    - answer_auth
    linkageType: ''
    returnType: void
    signature: void FuzzAuth(const uint8_t **data2, size_t *size2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gb_init
      Src: /src/fuzz_auth.c:49,1
    - Dst: init_daemon
      Src: /src/fuzz_auth.c:56,1
    - Dst: cache_init
      Src: /src/fuzz_auth.c:59,1
    - Dst: blockdata_init
      Src: /src/fuzz_auth.c:60,1
    - Dst: FuzzAuth
      Src: /src/fuzz_auth.c:62,1
    - Dst: cache_start_insert
      Src: /src/fuzz_auth.c:64,1
    - Dst: fuzz_blockdata_cleanup
      Src: /src/fuzz_auth.c:65,1
    - Dst: gb_cleanup
      Src: /src/fuzz_auth.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 72
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzz_auth.c
    functionUses: 0
    functionsReached:
    - cache_init
    - fuzz_blockdata_cleanup
    - FuzzAuth
    - init_daemon
    - gb_cleanup
    - gb_init
    - cache_start_insert
    - blockdata_init
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gb_init
      Src: /src/fuzz_util.c:17,1
    - Dst: init_daemon
      Src: /src/fuzz_util.c:19,1
    - Dst: gb_get_len_null_terminated
      Src: /src/fuzz_util.c:21,1
    - Dst: gb_get_len_null_terminated
      Src: /src/fuzz_util.c:22,1
    - Dst: hostname_isequal
      Src: /src/fuzz_util.c:26,1
    - Dst: legal_hostname
      Src: /src/fuzz_util.c:28,1
    - Dst: canonicalise
      Src: /src/fuzz_util.c:29,1
    - Dst: free
      Src: /src/fuzz_util.c:31,1
    - Dst: malloc
      Src: /src/fuzz_util.c:34,1
    - Dst: parse_hex
      Src: /src/fuzz_util.c:36,1
    - Dst: parse_hex
      Src: /src/fuzz_util.c:37,1
    - Dst: free
      Src: /src/fuzz_util.c:38,1
    - Dst: wildcard_match
      Src: /src/fuzz_util.c:40,1
    - Dst: strlen
      Src: /src/fuzz_util.c:41,1
    - Dst: strlen
      Src: /src/fuzz_util.c:41,1
    - Dst: wildcard_matchn
      Src: /src/fuzz_util.c:42,1
    - Dst: strlen
      Src: /src/fuzz_util.c:42,1
    - Dst: wildcard_matchn
      Src: /src/fuzz_util.c:44,1
    - Dst: strlen
      Src: /src/fuzz_util.c:44,1
    - Dst: hostname_issubdomain
      Src: /src/fuzz_util.c:46,1
    - Dst: memset
      Src: /src/fuzz_util.c:49,1
    - Dst: is_name_synthetic
      Src: /src/fuzz_util.c:50,1
    - Dst: hash_questions
      Src: /src/fuzz_util.c:53,1
    - Dst: rrfilter
      Src: /src/fuzz_util.c:55,1
    - Dst: fuzz_blockdata_cleanup
      Src: /src/fuzz_util.c:59,1
    - Dst: gb_cleanup
      Src: /src/fuzz_util.c:63,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 15
    functionDepth: 4
    functionLinenumber: 15
    functionLinenumberEnd: 66
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/fuzz_util.c
    functionUses: 0
    functionsReached:
    - malloc
    - hostname_isequal
    - gb_get_len_null_terminated
    - hostname_issubdomain
    - strlen
    - legal_hostname
    - is_name_synthetic
    - init_daemon
    - gb_cleanup
    - parse_hex
    - canonicalise
    - gb_init
    - wildcard_match
    - fuzz_blockdata_cleanup
    - free
    - memset
    - rrfilter
    - wildcard_matchn
    - hash_questions
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:41,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:43,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:45,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/forward.c:55,1
    - Dst: memset
      Src: /src/dnsmasq/src/forward.c:64,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:69,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:72,1
    - Dst: CMSG_LEN
      Src: /src/dnsmasq/src/forward.c:73,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:77,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/forward.c:78,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:78,1
    - Dst: CMSG_LEN
      Src: /src/dnsmasq/src/forward.c:79,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:86,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:89,1
    - Dst: CMSG_LEN
      Src: /src/dnsmasq/src/forward.c:90,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/forward.c:96,1
    - Dst: sendmsg
      Src: /src/dnsmasq/src/forward.c:96,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:103,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:103,1
    - Dst: strerror
      Src: /src/dnsmasq/src/forward.c:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 7
    argNames:
    - fd
    - nowild
    - packet
    - len
    - to
    - source
    - iface
    argTypes:
    - int
    - int
    - char*
    - size_t
    - union mysockaddr*
    - union all_addr*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 109
    functionName: send_from
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - memset
    - sendmsg
    - CMSG_LEN
    - CMSG_DATA
    - my_syslog
    - _
    - sa_len
    - retry_send
    - strerror
    - CMSG_SPACE
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int send_from(int fd, int nowild, char *packet, size_t len, \n\t      union
      mysockaddr *to, union all_addr *source,\n\t      unsigned int iface)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_incoming_mark
      Src: /src/dnsmasq/src/forward.c:116,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/forward.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - forward
    - fd
    argTypes:
    - struct frec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 118
    functionName: set_outgoing_mark
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - get_incoming_mark
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void set_outgoing_mark(struct frec *forward, int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:126,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:127,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:132,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - flags
    - name
    - addr
    - arg
    - type
    argTypes:
    - unsigned int
    - char*
    - union mysockaddr*
    - char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 135
    functionName: log_query_mysockaddr
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - ntohs
    - log_query
    linkageType: ''
    returnType: void
    signature: void log_query_mysockaddr(unsigned int flags, char *name, union mysockaddr
      *addr, char *arg, unsigned short type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: retry_send
      Src: /src/dnsmasq/src/forward.c:140,1
    - Dst: sendto
      Src: /src/dnsmasq/src/forward.c:140,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/forward.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 5
    argNames:
    - server
    - fd
    - header
    - plen
    - flags
    argTypes:
    - struct server*
    - int
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: server_send
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - sendto
    - sa_len
    - retry_send
    linkageType: ''
    returnType: void
    signature: "void server_send(struct server *server, int fd,\n\t\t\tconst void
      *header, size_t plen, int flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:148,1
    - Dst: strchr
      Src: /src/dnsmasq/src/forward.c:149,1
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:154,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/forward.c:155,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 1
    argNames:
    - domain
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 164
    functionName: domain_no_rebind
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - strlen
    - hostname_isequal
    - strchr
    linkageType: ''
    returnType: int
    signature: int domain_no_rebind(char *domain)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: extract_request
      Src: /src/dnsmasq/src/forward.c:181,1
    - Dst: lookup_frec
      Src: /src/dnsmasq/src/forward.c:195,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:202,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:207,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/forward.c:212,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:229,1
    - Dst: query_full
      Src: /src/dnsmasq/src/forward.c:239,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:246,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:247,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:267,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:298,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:321,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:326,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:332,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/forward.c:346,1
    - Dst: is_local_answer
      Src: /src/dnsmasq/src/forward.c:347,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:357,1
    - Dst: strchr
      Src: /src/dnsmasq/src/forward.c:359,1
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:360,1
    - Dst: check_for_local_domain
      Src: /src/dnsmasq/src/forward.c:361,1
    - Dst: get_new_frec
      Src: /src/dnsmasq/src/forward.c:369,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:376,1
    - Dst: add_do_bit
      Src: /src/dnsmasq/src/forward.c:378,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:382,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:388,1
    - Dst: get_id
      Src: /src/dnsmasq/src/forward.c:389,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:390,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:391,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:391,1
    - Dst: rand32
      Src: /src/dnsmasq/src/forward.c:391,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:394,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:398,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:400,1
    - Dst: domain_no_rebind
      Src: /src/dnsmasq/src/forward.c:413,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:422,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:425,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:428,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:456,1
    - Dst: extract_request
      Src: /src/dnsmasq/src/forward.c:459,1
    - Dst: filter_servers
      Src: /src/dnsmasq/src/forward.c:462,1
    - Dst: filter_servers
      Src: /src/dnsmasq/src/forward.c:477,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:483,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:489,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:517,1
    - Dst: allocate_rfd
      Src: /src/dnsmasq/src/forward.c:528,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:533,1
    - Dst: set_outgoing_mark
      Src: /src/dnsmasq/src/forward.c:534,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/forward.c:536,1
    - Dst: sendto
      Src: /src/dnsmasq/src/forward.c:536,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/forward.c:538,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:544,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/forward.c:553,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:556,1
    - Dst: dnsmasq_milliseconds
      Src: /src/dnsmasq/src/forward.c:580,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:585,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:586,1
    - Dst: make_local_answer
      Src: /src/dnsmasq/src/forward.c:592,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:597,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:600,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:602,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:606,1
    - Dst: get_incoming_mark
      Src: /src/dnsmasq/src/forward.c:609,1
    - Dst: report_addresses
      Src: /src/dnsmasq/src/forward.c:611,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:616,1
    - Dst: send_from
      Src: /src/dnsmasq/src/forward.c:618,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:618,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:618,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 231
    argCount: 11
    argNames:
    - udpfd
    - udpaddr
    - dst_addr
    - dst_iface
    - header
    - plen
    - replylimit
    - now
    - forward
    - fwd_flags
    - fast_retry
    argTypes:
    - int
    - union mysockaddr*
    - union all_addr*
    - unsigned int
    - struct dns_header*
    - size_t
    - size_t
    - time_t
    - struct frec*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 623
    functionName: forward_query
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - ntohs
    - OPCODE
    - get_new_frec
    - sa_len
    - retry_send
    - dump_packet_udp
    - send_from
    - strlen
    - allocate_rfd
    - check_for_local_domain
    - is_local_answer
    - whine_malloc
    - query_full
    - get_incoming_mark
    - htons
    - add_pseudoheader
    - free_frec
    - domain_no_rebind
    - extract_name
    - get_id
    - option_bool
    - log_query_mysockaddr
    - set_outgoing_mark
    - sockaddr_isequal
    - rand32
    - strcpy
    - extract_request
    - add_do_bit
    - make_local_answer
    - blockdata_retrieve
    - difftime
    - dnsmasq_milliseconds
    - filter_servers
    - lookup_frec
    - blockdata_alloc
    - report_addresses
    - strchr
    - sendto
    - lookup_domain
    linkageType: ''
    returnType: void
    signature: "void forward_query(int udpfd, union mysockaddr *udpaddr,\n\t\t\t  union
      all_addr *dst_addr, unsigned int dst_iface,\n\t\t\t  struct dns_header *header,
      size_t plen,  size_t replylimit, time_t now, \n\t\t\t  struct frec *forward,
      unsigned int fwd_flags, int fast_retry)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsmasq_milliseconds
      Src: /src/dnsmasq/src/forward.c:635,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:638,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:656,1
    - Dst: forward_query
      Src: /src/dnsmasq/src/forward.c:661,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 628
    functionDepth: 3
    functionLinenumber: 628
    functionLinenumberEnd: 671
    functionName: fast_retry
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - difftime
    - dnsmasq_milliseconds
    - blockdata_retrieve
    - forward_query
    linkageType: ''
    returnType: int
    signature: int fast_retry(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:677,1
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:681,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/forward.c:683,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 2
    argNames:
    - setlist
    - domain
    argTypes:
    - struct ipsets*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 693
    functionName: domain_find_sets
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - strlen
    - hostname_isequal
    linkageType: ''
    returnType: struct ipsets
    signature: struct ipsets *domain_find_sets(struct ipsets *setlist, const char
      *domain)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:703,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:710,1
    - Dst: domain_find_sets
      Src: /src/dnsmasq/src/forward.c:713,1
    - Dst: domain_find_sets
      Src: /src/dnsmasq/src/forward.c:717,1
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/forward.c:722,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:727,1
    - Dst: check_source
      Src: /src/dnsmasq/src/forward.c:727,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:729,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:729,1
    - Dst: rrfilter
      Src: /src/dnsmasq/src/forward.c:738,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/forward.c:744,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:748,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:752,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/forward.c:755,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:763,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:768,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/forward.c:769,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:776,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/forward.c:778,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/forward.c:785,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:786,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:786,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:787,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:792,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:795,1
    - Dst: check_for_local_domain
      Src: /src/dnsmasq/src/forward.c:796,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/forward.c:796,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/forward.c:802,1
    - Dst: do_doctor
      Src: /src/dnsmasq/src/forward.c:806,1
    - Dst: check_for_bogus_wildcard
      Src: /src/dnsmasq/src/forward.c:812,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:814,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:815,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:816,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/forward.c:817,1
    - Dst: extract_addresses
      Src: /src/dnsmasq/src/forward.c:824,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:828,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:829,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:830,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:836,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:836,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/forward.c:843,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:848,1
    - Dst: rrfilter
      Src: /src/dnsmasq/src/forward.c:848,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:853,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:857,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/forward.c:860,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:861,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:862,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:863,1
    - Dst: rrfilter
      Src: /src/dnsmasq/src/forward.c:871,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/forward.c:877,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:881,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:882,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:885,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 104
    argCount: 14
    argNames:
    - header
    - now
    - server
    - n
    - check_rebind
    - no_cache
    - cache_secure
    - bogusanswer
    - ad_reqd
    - do_bit
    - added_pheader
    - query_source
    - limit
    - ede
    argTypes:
    - struct dns_header*
    - time_t
    - struct server*
    - size_t
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - union mysockaddr*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 889
    functionName: process_reply
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - extract_addresses
    - OPCODE
    - do_doctor
    - find_pseudoheader
    - check_source
    - check_for_local_domain
    - prettyprint_addr
    - PUTSHORT
    - htons
    - add_pseudoheader
    - extract_name
    - domain_find_sets
    - log_query
    - option_bool
    - my_syslog
    - _
    - GETSHORT
    - RCODE
    - check_for_bogus_wildcard
    - rrfilter
    - resize_packet
    - SET_RCODE
    - lookup_domain
    linkageType: ''
    returnType: size_t
    signature: "size_t process_reply(struct dns_header *header, time_t now, struct
      server *server, size_t n, int check_rebind, \n\t\t\t    int no_cache, int cache_secure,
      int bogusanswer, int ad_reqd, int do_bit, int added_pheader, \n\t\t\t    union
      mysockaddr *query_source, unsigned char *limit, int ede)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:906,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:906,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:906,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:909,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:925,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:927,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:931,1
    - Dst: swap_to_tcp
      Src: /src/dnsmasq/src/forward.c:939,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:942,1
    - Dst: dnssec_validate_by_ds
      Src: /src/dnsmasq/src/forward.c:958,1
    - Dst: dnssec_validate_ds
      Src: /src/dnsmasq/src/forward.c:960,1
    - Dst: dnssec_validate_reply
      Src: /src/dnsmasq/src/forward.c:962,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:963,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:965,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:972,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:972,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:977,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:980,1
    - Dst: lookup_frec
      Src: /src/dnsmasq/src/forward.c:983,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:1004,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:1013,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:1013,1
    - Dst: dnssec_server
      Src: /src/dnsmasq/src/forward.c:1027,1
    - Dst: dnssec_generate_query
      Src: /src/dnsmasq/src/forward.c:1029,1
    - Dst: get_id
      Src: /src/dnsmasq/src/forward.c:1030,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1031,1
    - Dst: allocate_rfd
      Src: /src/dnsmasq/src/forward.c:1032,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:1033,1
    - Dst: get_new_frec::get_new_frec
      Src: /src/dnsmasq/src/forward.c:1034,1
    - Dst: next::next
      Src: /src/dnsmasq/src/forward.c:1036,1
    - Dst: frec_src::frec_src
      Src: /src/dnsmasq/src/forward.c:1042,1
    - Dst: frec_src::frec_src
      Src: /src/dnsmasq/src/forward.c:1045,1
    - Dst: frec_src::frec_src
      Src: /src/dnsmasq/src/forward.c:1049,1
    - Dst: frec_src::frec_src
      Src: /src/dnsmasq/src/forward.c:1050,1
    - Dst: blockdata_free::blockdata_free
      Src: /src/dnsmasq/src/forward.c:1057,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:1062,1
    - Dst: dnsmasq_milliseconds
      Src: /src/dnsmasq/src/forward.c:1067,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1073,1
    - Dst: set_outgoing_mark
      Src: /src/dnsmasq/src/forward.c:1074,1
    - Dst: server_send
      Src: /src/dnsmasq/src/forward.c:1077,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1080,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:1082,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1083,1
    - Dst: free_rfds
      Src: /src/dnsmasq/src/forward.c:1088,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:1089,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:1092,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:1102,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:1103,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:1103,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1108,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1108,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1109,1
    - Dst: return_reply
      Src: /src/dnsmasq/src/forward.c:1115,1
    - Dst: pop_and_retry_query
      Src: /src/dnsmasq/src/forward.c:1117,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 103
    argCount: 5
    argNames:
    - forward
    - header
    - plen
    - status
    - now
    argTypes:
    - struct frec*
    - struct dns_header*
    - ssize_t
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 1118
    functionName: dnssec_validate
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - ntohs
    - next::next
    - pop_and_retry_query
    - dump_packet_udp
    - blockdata_free::blockdata_free
    - allocate_rfd
    - STAT_ISEQUAL
    - blockdata_free
    - frec_src::frec_src
    - extract_name
    - log_query
    - get_id
    - option_bool
    - server_send
    - free_rfds
    - log_query_mysockaddr
    - return_reply
    - my_syslog
    - _
    - dnssec_validate_ds
    - dnssec_server
    - set_outgoing_mark
    - RCODE
    - dnssec_validate_by_ds
    - swap_to_tcp
    - blockdata_retrieve
    - dnsmasq_milliseconds
    - dnssec_generate_query
    - get_new_frec::get_new_frec
    - blockdata_alloc
    - lookup_frec
    - dnssec_validate_reply
    linkageType: ''
    returnType: void
    signature: "void dnssec_validate(struct frec *forward, struct dns_header *header,\n\t\t\t
      \   ssize_t plen, int status, time_t now)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:1127,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:1134,1
    - Dst: dnssec_validate
      Src: /src/dnsmasq/src/forward.c:1135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - forward
    - status
    - now
    argTypes:
    - struct frec*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1120
    functionDepth: 3
    functionLinenumber: 1120
    functionLinenumberEnd: 1137
    functionName: pop_and_retry_query
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 1
    functionsReached:
    - blockdata_retrieve
    - free_frec
    - dnssec_validate
    linkageType: ''
    returnType: void
    signature: void pop_and_retry_query(struct frec *forward, int status, time_t now)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: recvfrom
      Src: /src/dnsmasq/src/forward.c:1149,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:1164,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:1168,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:1170,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:1171,1
    - Dst: lookup_frec
      Src: /src/dnsmasq/src/forward.c:1173,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:1173,1
    - Dst: filter_servers
      Src: /src/dnsmasq/src/forward.c:1176,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/forward.c:1205,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:1213,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1224,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:1228,1
    - Dst: check_for_ignored_address
      Src: /src/dnsmasq/src/forward.c:1229,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:1242,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:1242,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:1246,1
    - Dst: forward_query
      Src: /src/dnsmasq/src/forward.c:1248,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/forward.c:1258,1
    - Dst: free_rfds
      Src: /src/dnsmasq/src/forward.c:1268,1
    - Dst: dnsmasq_milliseconds
      Src: /src/dnsmasq/src/forward.c:1272,1
    - Dst: dnsmasq_milliseconds
      Src: /src/dnsmasq/src/forward.c:1274,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:1279,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1283,1
    - Dst: dnssec_validate
      Src: /src/dnsmasq/src/forward.c:1287,1
    - Dst: memset
      Src: /src/dnsmasq/src/forward.c:1294,1
    - Dst: return_reply
      Src: /src/dnsmasq/src/forward.c:1298,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 67
    argCount: 2
    argNames:
    - fd
    - now
    argTypes:
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1141
    functionDepth: 3
    functionLinenumber: 1141
    functionLinenumberEnd: 1299
    functionName: reply_query
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - extract_name
    - memset
    - recvfrom
    - forward_query
    - blockdata_retrieve
    - free_rfds
    - dnsmasq_milliseconds
    - ntohs
    - option_bool
    - return_reply
    - GETSHORT
    - filter_servers
    - lookup_frec
    - check_for_ignored_address
    - dump_packet_udp
    - sockaddr_isequal
    - RCODE
    - dnssec_validate
    linkageType: ''
    returnType: void
    signature: void reply_query(int fd, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - arg1
    - arg2
    - len
    argTypes:
    - unsigned int*
    - unsigned int*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1301
    functionDepth: 0
    functionLinenumber: 1301
    functionLinenumberEnd: 1307
    functionName: xor_array
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xor_array(unsigned int *arg1, unsigned int *arg2, unsigned int
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: xor_array
      Src: /src/dnsmasq/src/forward.c:1337,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:1338,1
    - Dst: xor_array
      Src: /src/dnsmasq/src/forward.c:1339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - header
    - len
    - arg1
    - arg2
    argTypes:
    - struct dns_header*
    - ssize_t
    - struct frec_src*
    - struct frec_src*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1310
    functionDepth: 1
    functionLinenumber: 1310
    functionLinenumberEnd: 1340
    functionName: flip_queryname
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - extract_name
    - xor_array
    linkageType: ''
    returnType: void
    signature: void flip_queryname(struct dns_header *header, ssize_t len, struct
      frec_src *arg1, struct frec_src *arg2)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1359,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1364,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:1367,1
    - Dst: errflags_to_ede
      Src: /src/dnsmasq/src/forward.c:1374,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1376,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1384,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1384,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1387,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:1389,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:1396,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:1401,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1412,1
    - Dst: process_reply
      Src: /src/dnsmasq/src/forward.c:1426,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1436,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1439,1
    - Dst: get_incoming_mark
      Src: /src/dnsmasq/src/forward.c:1442,1
    - Dst: report_addresses
      Src: /src/dnsmasq/src/forward.c:1444,1
    - Dst: flip_queryname
      Src: /src/dnsmasq/src/forward.c:1453,1
    - Dst: send_from
      Src: /src/dnsmasq/src/forward.c:1461,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1461,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1461,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1464,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1470,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:1474,1
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/forward.c:1483,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1485,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1486,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1487,1
    - Dst: resize_packet::resize_packet
      Src: /src/dnsmasq/src/forward.c:1489,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:1493,1
    - Dst: flip_queryname
      Src: /src/dnsmasq/src/forward.c:1502,1
    - Dst: prev::prev
      Src: /src/dnsmasq/src/forward.c:1502,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1506,1
    - Dst: send_from
      Src: /src/dnsmasq/src/forward.c:1507,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1507,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1507,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1511,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:1518,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 89
    argCount: 5
    argNames:
    - now
    - forward
    - header
    - n
    - status
    argTypes:
    - time_t
    - struct frec*
    - struct dns_header*
    - ssize_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1342
    functionDepth: 3
    functionLinenumber: 1342
    functionLinenumberEnd: 1519
    functionName: return_reply
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - extract_name
    - prev::prev
    - log_query
    - option_bool
    - STAT_ISEQUAL
    - process_reply
    - resize_packet::resize_packet
    - errflags_to_ede
    - find_pseudoheader
    - get_incoming_mark
    - htons
    - report_addresses
    - flip_queryname
    - send_from
    - dump_packet_udp
    - free_frec
    linkageType: ''
    returnType: void
    signature: void return_reply(time_t now, struct frec *forward, struct dns_header
      *header, ssize_t n, int status)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dnsmasq/src/forward.c:1533,1
    - Dst: is_valid_dns_name
      Src: /src/dnsmasq/src/forward.c:1537,1
    - Dst: is_dns_name_matching_pattern
      Src: /src/dnsmasq/src/forward.c:1540,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - mark
    - name
    argTypes:
    - u32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1523
    functionDepth: 1
    functionLinenumber: 1523
    functionLinenumberEnd: 1544
    functionName: is_query_allowed_for_mark
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - strcmp
    - is_valid_dns_name
    - is_dns_name_matching_pattern
    linkageType: ''
    returnType: int
    signature: int is_query_allowed_for_mark(u32 mark, const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ubus_event_bcast_connmark_allowlist_refused
      Src: /src/dnsmasq/src/forward.c:1554,1
    - Dst: setup_reply
      Src: /src/dnsmasq/src/forward.c:1557,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/forward.c:1559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - header
    - qlen
    - mark
    - name
    argTypes:
    - struct dns_header*
    - size_t
    - u32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1562
    functionName: answer_disallowed
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - skip_questions
    - ubus_event_bcast_connmark_allowlist_refused
    - setup_reply
    linkageType: ''
    returnType: size_t
    signature: size_t answer_disallowed(struct dns_header *header, size_t qlen, u32
      mark, const char *name)
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1596,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1598,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1600,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1601,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1603,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/forward.c:1604,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1609,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1617,1
    - Dst: recvmsg
      Src: /src/dnsmasq/src/forward.c:1639,1
    - Dst: memset
      Src: /src/dnsmasq/src/forward.c:1649,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1669,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/forward.c:1677,1
    - Dst: htonl
      Src: /src/dnsmasq/src/forward.c:1685,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/forward.c:1687,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/forward.c:1696,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:1697,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:1697,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/forward.c:1713,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/forward.c:1713,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:1720,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/forward.c:1727,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/forward.c:1727,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:1737,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/forward.c:1752,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/forward.c:1752,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/forward.c:1759,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/forward.c:1768,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/forward.c:1771,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1773,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/forward.c:1774,1
    - Dst: loopback_exception
      Src: /src/dnsmasq/src/forward.c:1775,1
    - Dst: label_exception
      Src: /src/dnsmasq/src/forward.c:1776,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1780,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1793,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/forward.c:1794,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1815,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1819,1
    - Dst: get_incoming_mark
      Src: /src/dnsmasq/src/forward.c:1820,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:1823,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:1824,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:1824,1
    - Dst: extract_request
      Src: /src/dnsmasq/src/forward.c:1825,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:1830,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1840,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/forward.c:1845,1
    - Dst: detect_loop
      Src: /src/dnsmasq/src/forward.c:1859,1
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/forward.c:1864,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:1870,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:1872,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1903,1
    - Dst: is_query_allowed_for_mark
      Src: /src/dnsmasq/src/forward.c:1904,1
    - Dst: answer_disallowed
      Src: /src/dnsmasq/src/forward.c:1912,1
    - Dst: answer_auth
      Src: /src/dnsmasq/src/forward.c:1919,1
    - Dst: add_edns0_config
      Src: /src/dnsmasq/src/forward.c:1932,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:1933,1
    - Dst: answer_request
      Src: /src/dnsmasq/src/forward.c:1938,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:1964,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:1966,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:1970,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/forward.c:1975,1
    - Dst: report_addresses
      Src: /src/dnsmasq/src/forward.c:1980,1
    - Dst: send_from
      Src: /src/dnsmasq/src/forward.c:1983,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1983,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:1983,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:2006,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2007,1
    - Dst: forward_query
      Src: /src/dnsmasq/src/forward.c:2010,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2014,1
    CyclomaticComplexity: 100
    EdgeCount: 100
    ICount: 199
    argCount: 2
    argNames:
    - listen
    - now
    argTypes:
    - struct listener*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2015
      start: 1565
    functionDepth: 3
    functionLinenumber: 1565
    functionLinenumberEnd: 2015
    functionName: receive_query
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - detect_loop
    - forward_query
    - CMSG_DATA
    - OPCODE
    - iface_check
    - find_pseudoheader
    - recvmsg
    - dump_packet_udp
    - send_from
    - htonl
    - prettyprint_addr
    - CMSG_FIRSTHDR
    - is_same_net
    - get_incoming_mark
    - htons
    - blockdata_free
    - add_pseudoheader
    - answer_auth
    - in_zone
    - option_bool
    - log_query_mysockaddr
    - my_syslog
    - CMSG_NXTHDR
    - _
    - GETSHORT
    - enumerate_interfaces
    - add_edns0_config
    - answer_disallowed
    - loopback_exception
    - is_same_net6
    - is_query_allowed_for_mark
    - memset
    - extract_request
    - blockdata_retrieve
    - blockdata_alloc
    - indextoname
    - label_exception
    - report_addresses
    - CMSG_SPACE
    - answer_request
    linkageType: ''
    returnType: void
    signature: void receive_query(struct listener *listen, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: answer_auth
      Src: /src/dnsmasq/src/forward.c:1919,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1917
    functionDepth: 1
    functionLinenumber: 1917
    functionLinenumberEnd: 1926
    functionName: if
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - answer_auth
    linkageType: ''
    returnType: else
    signature: else if (auth_dns)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:2038,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:2040,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:2041,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:2044,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:2068,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2070,1
    - Dst: socket
      Src: /src/dnsmasq/src/forward.c:2074,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/forward.c:2080,1
    - Dst: local_bind
      Src: /src/dnsmasq/src/forward.c:2083,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2085,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/forward.c:2098,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/forward.c:2100,1
    - Dst: server_send
      Src: /src/dnsmasq/src/forward.c:2104,1
    - Dst: connect
      Src: /src/dnsmasq/src/forward.c:2114,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/forward.c:2114,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/forward.c:2119,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:2120,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:2120,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2122,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2133,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2134,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2135,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:2135,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2142,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:2155,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:2157,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:2158,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2166,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2170,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 80
    argCount: 8
    argNames:
    - first
    - last
    - start
    - packet
    - qsize
    - have_mark
    - mark
    - servp
    argTypes:
    - int
    - int
    - int
    - unsigned char*
    - size_t
    - int
    - unsigned int
    - struct server**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2020
    functionDepth: 2
    functionLinenumber: 2020
    functionLinenumberEnd: 2172
    functionName: tcp_talk
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - extract_name
    - local_bind
    - blockdata_retrieve
    - server_send
    - ntohs
    - close
    - my_syslog
    - GETSHORT
    - _
    - blockdata_alloc
    - connect
    - sa_len
    - htons
    - read_write
    - blockdata_free
    - prettyprint_addr
    - socket
    - setsockopt
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t tcp_talk(int first, int last, int start, unsigned char *packet,
      \ size_t qsize,\n\t\t\tint have_mark, unsigned int mark, struct server **servp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2182,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/forward.c:2193,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2202,1
    - Dst: dnssec_server
      Src: /src/dnsmasq/src/forward.c:2202,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2206,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2207,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2209,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2210,1
    - Dst: tcp_talk
      Src: /src/dnsmasq/src/forward.c:2212,1
    - Dst: tcp_key_recurse
      Src: /src/dnsmasq/src/forward.c:2216,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2218,1
    - Dst: rrfilter
      Src: /src/dnsmasq/src/forward.c:2222,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2227,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2228,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/forward.c:2229,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2234,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/forward.c:2235,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/forward.c:2241,1
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:2248,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 9
    argNames:
    - now
    - status
    - header
    - plenp
    - class
    - name
    - server
    - keycount
    - validatecount
    argTypes:
    - time_t
    - int
    - struct dns_header*
    - ssize_t*
    - int
    - char*
    - struct server*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2250
      start: 2178
    functionDepth: 3
    functionLinenumber: 2178
    functionLinenumberEnd: 2250
    functionName: tcp_from_udp
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - STAT_ISEQUAL
    - log_query_mysockaddr
    - whine_malloc
    - rrfilter
    - resize_packet
    - free
    - dnssec_server
    - htons
    - tcp_talk
    - tcp_key_recurse
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int tcp_from_udp(time_t now, int status, struct dns_header *header,
      ssize_t *plenp, \n\t\t int class, char *name, struct server *server, \n\t\t
      int *keycount, int *validatecount)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2267,1
    - Dst: dnssec_validate_by_ds
      Src: /src/dnsmasq/src/forward.c:2268,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2269,1
    - Dst: dnssec_validate_ds
      Src: /src/dnsmasq/src/forward.c:2270,1
    - Dst: dnssec_validate_reply
      Src: /src/dnsmasq/src/forward.c:2272,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2273,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2275,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2275,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2275,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:2280,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:2280,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2284,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:2287,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:2288,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:2288,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2297,1
    - Dst: dnssec_generate_query
      Src: /src/dnsmasq/src/forward.c:2307,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2308,1
    - Dst: dnssec_server
      Src: /src/dnsmasq/src/forward.c:2310,1
    - Dst: tcp_talk
      Src: /src/dnsmasq/src/forward.c:2316,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2325,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2326,1
    - Dst: tcp_key_recurse
      Src: /src/dnsmasq/src/forward.c:2328,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2334,1
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:2339,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 46
    argCount: 12
    argNames:
    - now
    - status
    - header
    - n
    - class
    - name
    - keyname
    - server
    - have_mark
    - mark
    - keycount
    - validatecount
    argTypes:
    - time_t
    - int
    - struct dns_header*
    - size_t
    - int
    - char*
    - char*
    - struct server*
    - int
    - unsigned int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2342
      start: 2253
    functionDepth: 3
    functionLinenumber: 2253
    functionLinenumberEnd: 2342
    functionName: tcp_key_recurse
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - extract_name
    - option_bool
    - STAT_ISEQUAL
    - dnssec_generate_query
    - whine_malloc
    - my_syslog
    - log_query_mysockaddr
    - _
    - dnssec_validate_ds
    - dnssec_server
    - free
    - dnssec_validate_reply
    - tcp_talk
    - tcp_key_recurse
    - dnssec_validate_by_ds
    linkageType: ''
    returnType: int
    signature: "int tcp_key_recurse(time_t now, int status, struct dns_header *header,
      size_t n, \n\t\t\t   int class, char *name, char *keyname, struct server *server,
      \n\t\t\t   int have_mark, unsigned int mark, int *keycount, int *validatecount)"
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2366,1
    - Dst: getpeername
      Src: /src/dnsmasq/src/forward.c:2382,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2387,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2387,1
    - Dst: get_incoming_mark
      Src: /src/dnsmasq/src/forward.c:2396,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2401,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/forward.c:2409,1
    - Dst: htonl
      Src: /src/dnsmasq/src/forward.c:2417,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/forward.c:2419,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/forward.c:2425,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:2426,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:2426,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2445,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/forward.c:2446,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2447,1
    - Dst: memset
      Src: /src/dnsmasq/src/forward.c:2455,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:2465,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2467,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/forward.c:2467,1
    - Dst: extract_request
      Src: /src/dnsmasq/src/forward.c:2471,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2476,1
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/forward.c:2480,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:2486,1
    - Dst: add_edns0_config
      Src: /src/dnsmasq/src/forward.c:2492,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/forward.c:2493,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2496,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2506,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/forward.c:2511,1
    - Dst: domain_no_rebind
      Src: /src/dnsmasq/src/forward.c:2523,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2539,1
    - Dst: is_query_allowed_for_mark
      Src: /src/dnsmasq/src/forward.c:2540,1
    - Dst: answer_disallowed
      Src: /src/dnsmasq/src/forward.c:2548,1
    - Dst: answer_auth
      Src: /src/dnsmasq/src/forward.c:2553,1
    - Dst: answer_request
      Src: /src/dnsmasq/src/forward.c:2556,1
    - Dst: check_log_writer
      Src: /src/dnsmasq/src/forward.c:2562,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:2570,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/forward.c:2576,1
    - Dst: is_local_answer
      Src: /src/dnsmasq/src/forward.c:2577,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2584,1
    - Dst: strchr
      Src: /src/dnsmasq/src/forward.c:2586,1
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:2587,1
    - Dst: check_for_local_domain
      Src: /src/dnsmasq/src/forward.c:2588,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2593,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2599,1
    - Dst: add_do_bit
      Src: /src/dnsmasq/src/forward.c:2601,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2605,1
    - Dst: tcp_talk
      Src: /src/dnsmasq/src/forward.c:2611,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:2616,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/forward.c:2617,1
    - Dst: log_query_mysockaddr
      Src: /src/dnsmasq/src/forward.c:2618,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2621,1
    - Dst: memset
      Src: /src/dnsmasq/src/forward.c:2624,1
    - Dst: tcp_key_recurse
      Src: /src/dnsmasq/src/forward.c:2632,1
    - Dst: errflags_to_ede
      Src: /src/dnsmasq/src/forward.c:2637,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2639,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2647,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2647,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2649,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/forward.c:2651,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:2658,1
    - Dst: log_query
      Src: /src/dnsmasq/src/forward.c:2663,1
    - Dst: process_reply
      Src: /src/dnsmasq/src/forward.c:2689,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2690,1
    - Dst: make_local_answer
      Src: /src/dnsmasq/src/forward.c:2706,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2720,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:2723,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/forward.c:2725,1
    - Dst: check_log_writer
      Src: /src/dnsmasq/src/forward.c:2728,1
    - Dst: htons
      Src: /src/dnsmasq/src/forward.c:2730,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:2736,1
    - Dst: report_addresses
      Src: /src/dnsmasq/src/forward.c:2737,1
    - Dst: read_write
      Src: /src/dnsmasq/src/forward.c:2740,1
    - Dst: shutdown
      Src: /src/dnsmasq/src/forward.c:2749,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2750,1
    - Dst: shutdown
      Src: /src/dnsmasq/src/forward.c:2760,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2761,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:2764,1
    - Dst: check_log_writer
      Src: /src/dnsmasq/src/forward.c:2765,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 194
    argCount: 5
    argNames:
    - confd
    - now
    - local_addr
    - netmask
    - auth_dns
    argTypes:
    - int
    - time_t
    - union mysockaddr*
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2768
      start: 2350
    functionDepth: 4
    functionLinenumber: 2350
    functionLinenumberEnd: 2768
    functionName: tcp_request
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - ntohs
    - check_log_writer
    - close
    - OPCODE
    - find_pseudoheader
    - htonl
    - strlen
    - tcp_key_recurse
    - prettyprint_addr
    - check_for_local_domain
    - is_local_answer
    - getpeername
    - STAT_ISEQUAL
    - whine_malloc
    - is_same_net
    - get_incoming_mark
    - htons
    - blockdata_free
    - add_pseudoheader
    - answer_auth
    - domain_no_rebind
    - in_zone
    - extract_name
    - log_query
    - option_bool
    - log_query_mysockaddr
    - my_syslog
    - _
    - GETSHORT
    - add_edns0_config
    - errflags_to_ede
    - answer_disallowed
    - tcp_talk
    - is_same_net6
    - is_query_allowed_for_mark
    - strcpy
    - memset
    - extract_request
    - add_do_bit
    - make_local_answer
    - blockdata_retrieve
    - shutdown
    - process_reply
    - blockdata_alloc
    - report_addresses
    - read_write
    - strchr
    - answer_request
    - lookup_domain
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *tcp_request(int confd, time_t now,\n\t\t\t   union
      mysockaddr *local_addr, struct in_addr netmask, int auth_dns)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/forward.c:2776,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/forward.c:2786,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2788,1
    - Dst: local_bind
      Src: /src/dnsmasq/src/forward.c:2793,1
    - Dst: sockaddr_isnull
      Src: /src/dnsmasq/src/forward.c:2797,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/forward.c:2800,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/forward.c:2802,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:2804,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:2804,1
    - Dst: strerror
      Src: /src/dnsmasq/src/forward.c:2805,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2808,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2772
    functionDepth: 1
    functionLinenumber: 2772
    functionLinenumberEnd: 2812
    functionName: random_sock
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - local_bind
    - safe_strncpy
    - close
    - my_syslog
    - _
    - strerror
    - sockaddr_isnull
    - prettyprint_addr
    - socket
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int random_sock(struct server *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/forward.c:2820,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/forward.c:2821,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - serv1
    - serv2
    argTypes:
    - struct server*
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2822
      start: 2815
    functionDepth: 1
    functionLinenumber: 2815
    functionLinenumberEnd: 2822
    functionName: server_isequal
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - strncmp
    - sockaddr_isequal
    linkageType: ''
    returnType: int
    signature: "int server_isequal(const struct server *serv1,\n\t\t\t const struct
      server *serv2)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: server_isequal
      Src: /src/dnsmasq/src/forward.c:2861,1
    - Dst: random_sock
      Src: /src/dnsmasq/src/forward.c:2900,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2913,1
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:2918,1
    - Dst: server_isequal
      Src: /src/dnsmasq/src/forward.c:2931,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2963,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:2966,1
    - Dst: random_sock
      Src: /src/dnsmasq/src/forward.c:2967,1
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:2981,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 87
    argCount: 2
    argNames:
    - fdlp
    - serv
    argTypes:
    - struct randfd_list**
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3000
      start: 2833
    functionDepth: 2
    functionLinenumber: 2833
    functionLinenumberEnd: 3000
    functionName: allocate_rfd
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - server_isequal
    - whine_malloc
    - close
    - free
    - random_sock
    linkageType: ''
    returnType: int
    signature: int allocate_rfd(struct randfd_list **fdlp, struct server *serv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dnsmasq/src/forward.c:3009,1
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:3014,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - fdlp
    argTypes:
    - struct randfd_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3039
      start: 3002
    functionDepth: 0
    functionLinenumber: 3002
    functionLinenumberEnd: 3039
    functionName: free_rfds
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - free
    - close
    linkageType: ''
    returnType: void
    signature: void free_rfds(struct randfd_list **fdlp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:3050,1
    - Dst: free
      Src: /src/dnsmasq/src/forward.c:3059,1
    - Dst: free_rfds
      Src: /src/dnsmasq/src/forward.c:3067,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/forward.c:3073,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:3095,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - f
    argTypes:
    - struct frec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3102
      start: 3041
    functionDepth: 1
    functionLinenumber: 3041
    functionLinenumberEnd: 3102
    functionName: free_frec
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 4
    functionsReached:
    - free
    - free_frec
    - blockdata_free
    - free_rfds
    linkageType: ''
    returnType: void
    signature: void free_frec(struct frec *f)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:3134,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:3137,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:3140,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:3145,1
    - Dst: server_samegroup
      Src: /src/dnsmasq/src/forward.c:3145,1
    - Dst: query_full
      Src: /src/dnsmasq/src/forward.c:3151,1
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:3155,1
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:3159,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/forward.c:3163,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 37
    argCount: 3
    argNames:
    - now
    - master
    - force
    argTypes:
    - time_t
    - struct server*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3179
      start: 3112
    functionDepth: 2
    functionLinenumber: 3112
    functionLinenumberEnd: 3179
    functionName: get_new_frec
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - difftime
    - whine_malloc
    - query_full
    - server_samegroup
    - free_frec
    linkageType: ''
    returnType: struct frec
    signature: struct frec *get_new_frec(time_t now, struct server *master, int force)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/forward.c:3185,1
    - Dst: strlen
      Src: /src/dnsmasq/src/forward.c:3188,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:3189,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:3189,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:3191,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:3191,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - now
    - domain
    argTypes:
    - time_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3193
      start: 3181
    functionDepth: 1
    functionLinenumber: 3181
    functionLinenumberEnd: 3193
    functionName: query_full
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - difftime
    - strlen
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void query_full(time_t now, char *domain)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:3206,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/forward.c:3206,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/forward.c:3214,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/forward.c:3220,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:3222,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/forward.c:3223,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/forward.c:3239,1
    - Dst: _
      Src: /src/dnsmasq/src/forward.c:3239,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 25
    argCount: 6
    argNames:
    - target
    - class
    - rrtype
    - id
    - flags
    - flagmask
    argTypes:
    - char*
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3250
      start: 3195
    functionDepth: 1
    functionLinenumber: 3195
    functionLinenumberEnd: 3250
    functionName: lookup_frec
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 3
    functionsReached:
    - extract_name
    - option_bool
    - blockdata_retrieve
    - my_syslog
    - GETSHORT
    - _
    linkageType: ''
    returnType: struct frec
    signature: struct frec *lookup_frec(char *target, int class, int rrtype, int id,
      int flags, int flagmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: server_send
      Src: /src/dnsmasq/src/forward.c:3256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3258
      start: 3253
    functionDepth: 2
    functionLinenumber: 3253
    functionLinenumberEnd: 3258
    functionName: resend_query
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - server_send
    linkageType: ''
    returnType: void
    signature: void resend_query(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free_frec
      Src: /src/dnsmasq/src/forward.c:3268,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - server
    argTypes:
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3278
      start: 3261
    functionDepth: 2
    functionLinenumber: 3261
    functionLinenumberEnd: 3278
    functionName: server_gone
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 0
    functionsReached:
    - free_frec
    linkageType: ''
    returnType: void
    signature: void server_gone(struct server *server)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rand16
      Src: /src/dnsmasq/src/forward.c:3288,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3298
      start: 3281
    functionDepth: 1
    functionLinenumber: 3281
    functionLinenumberEnd: 3298
    functionName: get_id
    functionSourceFile: /src/dnsmasq/src/forward.c
    functionUses: 2
    functionsReached:
    - rand16
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short get_id(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:26,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/edns0.c:35,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:37,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/edns0.c:39,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:42,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:43,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/edns0.c:52,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/edns0.c:59,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:59,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:59,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/edns0.c:65,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:68,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:70,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:72,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/edns0.c:73,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 6
    argNames:
    - header
    - plen
    - len
    - p
    - is_sign
    - is_last
    argTypes:
    - struct dns_header*
    - size_t
    - size_t*
    - unsigned char**
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 96
    functionName: find_pseudoheader
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 4
    functionsReached:
    - ADD_RDLEN
    - skip_questions
    - ntohs
    - GETSHORT
    - OPCODE
    - skip_name
    - skip_section
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *find_pseudoheader(struct dns_header *header, size_t
      plen, size_t  *len, unsigned char **p, int *is_sign, int *is_last)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:110,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:123,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:124,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:125,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:131,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:135,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/edns0.c:136,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:147,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:148,1
    - Dst: memmove
      Src: /src/dnsmasq/src/edns0.c:166,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:167,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/edns0.c:181,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:182,1
    - Dst: rrfilter
      Src: /src/dnsmasq/src/edns0.c:185,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/edns0.c:195,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/edns0.c:196,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:197,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:197,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:197,1
    - Dst: free
      Src: /src/dnsmasq/src/edns0.c:201,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:206,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:207,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:208,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:209,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:211,1
    - Dst: free
      Src: /src/dnsmasq/src/edns0.c:218,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:221,1
    - Dst: free
      Src: /src/dnsmasq/src/edns0.c:222,1
    - Dst: htons
      Src: /src/dnsmasq/src/edns0.c:228,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/edns0.c:228,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:239,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:240,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:243,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:245,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 88
    argCount: 8
    argNames:
    - header
    - plen
    - limit
    - optno
    - opt
    - optlen
    - set_do
    - replace
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - int
    - unsigned char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 248
    functionName: add_pseudoheader
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 4
    functionsReached:
    - skip_section
    - skip_questions
    - memmove
    - rrfilter
    - CHECK_LEN
    - whine_malloc
    - ntohs
    - GETSHORT
    - find_pseudoheader
    - PUTSHORT
    - htons
    - free
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t add_pseudoheader(struct dns_header *header, size_t plen, unsigned
      char *limit, \n\t\t\tint optno, unsigned char *opt, size_t optlen, int set_do,
      int replace)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - header
    - plen
    - limit
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: add_do_bit
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 2
    functionsReached:
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: size_t add_do_bit(struct dns_header *header, size_t plen, unsigned
      char *limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: char64
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char char64(unsigned char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: char64
      Src: /src/dnsmasq/src/edns0.c:262,1
    - Dst: char64
      Src: /src/dnsmasq/src/edns0.c:263,1
    - Dst: char64
      Src: /src/dnsmasq/src/edns0.c:264,1
    - Dst: char64
      Src: /src/dnsmasq/src/edns0.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: encoder
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - char64
    linkageType: ''
    returnType: void
    signature: void encoder(unsigned char *in, char *out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:278,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:278,1
    - Dst: find_mac
      Src: /src/dnsmasq/src/edns0.c:278,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:280,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:284,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/edns0.c:285,1
    - Dst: encoder
      Src: /src/dnsmasq/src/edns0.c:288,1
    - Dst: encoder
      Src: /src/dnsmasq/src/edns0.c:289,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:293,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:297,1
    - Dst: strlen
      Src: /src/dnsmasq/src/edns0.c:297,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 6
    argNames:
    - header
    - plen
    - limit
    - l3
    - now
    - cacheablep
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    - time_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 300
    functionName: add_dns_client
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - encoder
    - option_bool
    - find_mac
    - print_mac
    - strlen
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: "size_t add_dns_client(struct dns_header *header, size_t plen, unsigned
      char *limit,\n\t\t\t     union mysockaddr *l3, time_t now, int *cacheablep)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:312,1
    - Dst: find_mac
      Src: /src/dnsmasq/src/edns0.c:312,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:315,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:318,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:322,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 6
    argNames:
    - header
    - plen
    - limit
    - l3
    - now
    - cacheablep
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    - time_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 306
    functionDepth: 3
    functionLinenumber: 306
    functionLinenumberEnd: 325
    functionName: add_mac
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - option_bool
    - find_mac
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: "size_t add_mac(struct dns_header *header, size_t plen, unsigned char
      *limit,\n\t\t      union mysockaddr *l3, time_t now, int *cacheablep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - addr
    - family
    argTypes:
    - union mysockaddr*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 339
    functionName: get_addrp
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *get_addrp(union mysockaddr *addr, const short family)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_addrp
      Src: /src/dnsmasq/src/edns0.c:359,1
    - Dst: get_addrp
      Src: /src/dnsmasq/src/edns0.c:372,1
    - Dst: htons
      Src: /src/dnsmasq/src/edns0.c:379,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:384,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - opt
    - source
    - cacheablep
    argTypes:
    - struct subnet_opt*
    - union mysockaddr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 398
    functionName: calc_subnet_opt
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - memcpy
    - get_addrp
    - htons
    linkageType: ''
    returnType: size_t
    signature: size_t calc_subnet_opt(struct subnet_opt *opt, union mysockaddr *source,
      int *cacheablep)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:411,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:413,1
    - Dst: calc_subnet_opt
      Src: /src/dnsmasq/src/edns0.c:415,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:417,1
    - Dst: find_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:426,1
    - Dst: check_source
      Src: /src/dnsmasq/src/edns0.c:427,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 5
    argNames:
    - header
    - plen
    - limit
    - source
    - cacheable
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 403
    functionDepth: 3
    functionLinenumber: 403
    functionLinenumberEnd: 434
    functionName: add_source_addr
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - option_bool
    - calc_subnet_opt
    - find_pseudoheader
    - check_source
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: "size_t add_source_addr(struct dns_header *header, size_t plen, unsigned
      char *limit,\n\t\t\t      union mysockaddr *source, int *cacheable)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calc_subnet_opt
      Src: /src/dnsmasq/src/edns0.c:447,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/edns0.c:449,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:454,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/edns0.c:455,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:461,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/edns0.c:462,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/edns0.c:469,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 4
    argNames:
    - header
    - plen
    - pseudoheader
    - peer
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 436
    functionDepth: 2
    functionLinenumber: 436
    functionLinenumberEnd: 479
    functionName: check_source
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 2
    functionsReached:
    - CHECK_LEN
    - calc_subnet_opt
    - GETSHORT
    - memcmp
    - skip_name
    linkageType: ''
    returnType: int
    signature: int check_source(struct dns_header *header, size_t plen, unsigned char
      *pseudoheader, union mysockaddr *peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:519,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/edns0.c:520,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:523,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:524,1
    - Dst: get_addrp
      Src: /src/dnsmasq/src/edns0.c:524,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:527,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:529,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/edns0.c:530,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/edns0.c:536,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/edns0.c:537,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:540,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - header
    - plen
    - limit
    - source
    - cacheable
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 541
    functionName: add_umbrella_opt
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 0
    functionsReached:
    - PUTLONG
    - get_addrp
    - option_bool
    - PUTSHORT
    - memcpy
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: size_t add_umbrella_opt(struct dns_header *header, size_t plen, unsigned
      char *limit, union mysockaddr *source, int *cacheable)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_mac
      Src: /src/dnsmasq/src/edns0.c:551,1
    - Dst: add_dns_client
      Src: /src/dnsmasq/src/edns0.c:552,1
    - Dst: add_pseudoheader
      Src: /src/dnsmasq/src/edns0.c:555,1
    - Dst: strlen
      Src: /src/dnsmasq/src/edns0.c:556,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/edns0.c:558,1
    - Dst: add_umbrella_opt
      Src: /src/dnsmasq/src/edns0.c:559,1
    - Dst: add_source_addr
      Src: /src/dnsmasq/src/edns0.c:561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - header
    - plen
    - limit
    - source
    - now
    - cacheable
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - union mysockaddr*
    - time_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 546
    functionDepth: 4
    functionLinenumber: 546
    functionLinenumberEnd: 564
    functionName: add_edns0_config
    functionSourceFile: /src/dnsmasq/src/edns0.c
    functionUses: 2
    functionsReached:
    - add_mac
    - option_bool
    - add_dns_client
    - add_source_addr
    - add_umbrella_opt
    - strlen
    - add_pseudoheader
    linkageType: ''
    returnType: size_t
    signature: "size_t add_edns0_config(struct dns_header *header, size_t plen, unsigned
      char *limit, \n\t\t\tunion mysockaddr *source, time_t now, int *cacheable)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/dhcp6.c:44,1
    - Dst: defined
      Src: /src/dnsmasq/src/dhcp6.c:45,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp6.c:46,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp6.c:48,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/dhcp6.c:49,1
    - Dst: set_ipv6pktinfo
      Src: /src/dnsmasq/src/dhcp6.c:50,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp6.c:51,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp6.c:58,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp6.c:58,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp6.c:63,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp6.c:69,1
    - Dst: die
      Src: /src/dnsmasq/src/dhcp6.c:72,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp6.c:72,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:75,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp6.c:81,1
    - Dst: bind
      Src: /src/dnsmasq/src/dhcp6.c:83,1
    - Dst: die
      Src: /src/dnsmasq/src/dhcp6.c:84,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp6.c:84,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 87
    functionName: dhcp6_init
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - set_ipv6pktinfo
    - memset
    - option_bool
    - bind
    - fix_fd
    - die
    - defined
    - _
    - htons
    - socket
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void dhcp6_init(void)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/dhcp6.c:98,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:108,1
    - Dst: recv_dhcp_packet
      Src: /src/dnsmasq/src/dhcp6.c:118,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/dhcp6.c:121,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/dhcp6.c:121,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/dhcp6.c:128,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dhcp6.c:134,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp6.c:150,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp6.c:151,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp6.c:161,1
    - Dst: relay_reply6
      Src: /src/dnsmasq/src/dhcp6.c:165,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp6.c:168,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/dhcp6.c:168,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dhcp6.c:172,1
    - Dst: sendto
      Src: /src/dnsmasq/src/dhcp6.c:172,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/dhcp6.c:173,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp6.c:181,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp6.c:186,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:192,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:193,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:194,1
    - Dst: wildcard_matchn
      Src: /src/dnsmasq/src/dhcp6.c:204,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/dhcp6.c:206,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp6.c:209,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp6.c:210,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/dhcp6.c:221,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:231,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dhcp6.c:236,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:238,1
    - Dst: relay_upstream6
      Src: /src/dnsmasq/src/dhcp6.c:239,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/dhcp6.c:242,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:248,1
    - Dst: relay_upstream6
      Src: /src/dnsmasq/src/dhcp6.c:249,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp6.c:256,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/dhcp6.c:267,1
    - Dst: dhcp6_reply
      Src: /src/dnsmasq/src/dhcp6.c:269,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp6.c:278,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp6.c:281,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/dhcp6.c:281,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dhcp6.c:285,1
    - Dst: sendto
      Src: /src/dnsmasq/src/dhcp6.c:285,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/dhcp6.c:286,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dhcp6.c:291,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dhcp6.c:292,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 92
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 294
    functionName: dhcp6_packet
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 1
    functionsReached:
    - CMSG_DATA
    - lease_update_dns
    - retry_send
    - dump_packet_udp
    - dhcp6_reply
    - lease_prune
    - lease_update_file
    - IN6_IS_ADDR_UNSPECIFIED
    - inet_pton
    - iface_enumerate
    - CMSG_FIRSTHDR
    - recv_dhcp_packet
    - htons
    - wildcard_match
    - CMSG_NXTHDR
    - my_syslog
    - _
    - memset
    - if_nametoindex
    - IN6_ARE_ADDR_EQUAL
    - indextoname
    - save_counter
    - relay_reply6
    - CMSG_SPACE
    - sendto
    - wildcard_matchn
    - relay_upstream6
    linkageType: ''
    returnType: void
    signature: void dhcp6_packet(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp6.c:313,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp6.c:318,1
    - Dst: find_mac
      Src: /src/dnsmasq/src/dhcp6.c:326,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dhcp6.c:329,1
    - Dst: sendto
      Src: /src/dnsmasq/src/dhcp6.c:329,1
    - Dst: nanosleep
      Src: /src/dnsmasq/src/dhcp6.c:333,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 6
    argNames:
    - client
    - iface
    - mac
    - maclenp
    - mactypep
    - now
    argTypes:
    - struct in6_addr*
    - int
    - unsigned char*
    - unsigned int*
    - unsigned int*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 338
    functionName: get_client_mac
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - memset
    - find_mac
    - nanosleep
    - retry_send
    - htons
    - sendto
    linkageType: ''
    returnType: void
    signature: void get_client_mac(struct in6_addr *client, int iface, unsigned char
      *mac, unsigned int *maclenp, unsigned int *mactypep, time_t now)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/dhcp6.c:356,1
    - Dst: IN6_IS_ADDR_ULA
      Src: /src/dnsmasq/src/dhcp6.c:358,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/dnsmasq/src/dhcp6.c:361,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/dhcp6.c:362,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/dhcp6.c:363,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:370,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:385,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:386,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:427,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:431,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:432,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:446,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 58
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 450
    functionName: complete_context6
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - IN6_IS_ADDR_ULA
    - IN6_ARE_ADDR_EQUAL
    - IN6_IS_ADDR_LOOPBACK
    - IN6_IS_ADDR_MULTICAST
    - IN6_IS_ADDR_LINKLOCAL
    linkageType: ''
    returnType: int
    signature: "int complete_context6(struct in6_addr *local,  int prefix,\n\t\t\t
      \    int scope, int if_index, int flags, unsigned int preferred, \n\t\t\t     unsigned
      int valid, void *vparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:462,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:463,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 4
    argNames:
    - configs
    - net
    - prefix
    - addr
    argTypes:
    - struct dhcp_config*
    - struct in6_addr*
    - int
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 468
    functionName: config_find_by_address6
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    linkageType: ''
    returnType: struct dhcp_config
    signature: struct dhcp_config *config_find_by_address6(struct dhcp_config *configs,
      struct in6_addr *net, int prefix,  struct in6_addr *addr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rand64
      Src: /src/dnsmasq/src/dhcp6.c:490,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp6.c:499,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp6.c:503,1
    - Dst: lease_find_max_addr6
      Src: /src/dnsmasq/src/dhcp6.c:509,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:515,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:515,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:522,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:531,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/dhcp6.c:535,1
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/dhcp6.c:538,1
    - Dst: config_find_by_address6
      Src: /src/dnsmasq/src/dhcp6.c:539,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:544,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:545,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 35
    argCount: 9
    argNames:
    - context
    - clid
    - clid_len
    - temp_addr
    - iaid
    - serial
    - netids
    - plain_range
    - ans
    argTypes:
    - struct dhcp_context*
    - unsigned char*
    - int
    - int
    - unsigned int
    - int
    - struct dhcp_netid*
    - int
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 551
    functionName: address6_allocate
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - setaddr6part
    - config_find_by_address6
    - option_bool
    - addr6part
    - lease6_find_by_addr
    - rand64
    - match_netid
    - lease_find_max_addr6
    linkageType: ''
    returnType: struct dhcp_context
    signature: "struct dhcp_context *address6_allocate(struct dhcp_context *context,
      \ unsigned char *clid, int clid_len, int temp_addr,\n\t\t\t\t       unsigned
      int iaid, int serial, struct dhcp_netid *netids, int plain_range, struct in6_addr
      *ans)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:559,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:564,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/dhcp6.c:565,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:568,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:569,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp6.c:572,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 4
    argNames:
    - context
    - taddr
    - netids
    - plain_range
    argTypes:
    - struct dhcp_context*
    - struct in6_addr*
    - struct dhcp_netid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 577
    functionName: address6_available
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - addr6part
    - match_netid
    linkageType: ''
    returnType: struct dhcp_context
    signature: "struct dhcp_context *address6_available(struct dhcp_context *context,
      \n\t\t\t\t\tstruct in6_addr *taddr,\n\t\t\t\t\tstruct dhcp_netid *netids,\n\t\t\t\t\tint
      plain_range)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:588,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp6.c:589,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - context
    - taddr
    - netids
    - plain_range
    argTypes:
    - struct dhcp_context*
    - struct in6_addr*
    - struct dhcp_netid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 593
    functionName: address6_valid
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - match_netid
    linkageType: ''
    returnType: struct dhcp_context
    signature: "struct dhcp_context *address6_valid(struct dhcp_context *context,
      \n\t\t\t\t    struct in6_addr *taddr,\n\t\t\t\t    struct dhcp_netid *netids,\n\t\t\t\t
      \   int plain_range)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp6.c:603,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dhcp6.c:605,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/dhcp6.c:606,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp6.c:607,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp6.c:616,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/dhcp6.c:620,1
    - Dst: die
      Src: /src/dnsmasq/src/dhcp6.c:623,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 625
    functionName: make_duid
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - PUTLONG
    - option_bool
    - die
    - iface_enumerate
    - safe_malloc
    - PUTSHORT
    - memcpy
    linkageType: ''
    returnType: void
    signature: void make_duid(time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp6.c:644,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dhcp6.c:646,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dhcp6.c:647,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp6.c:651,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dhcp6.c:653,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dhcp6.c:654,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/dhcp6.c:655,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp6.c:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - index
    - type
    - mac
    - maclen
    - parm
    argTypes:
    - int
    - unsigned int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 661
    functionName: make_duid1
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - PUTLONG
    - safe_malloc
    - PUTSHORT
    - memcpy
    linkageType: ''
    returnType: int
    signature: int make_duid1(int index, unsigned int type, char *mac, size_t maclen,
      void *parm)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/dnsmasq/src/dhcp6.c:684,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/dhcp6.c:685,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/dhcp6.c:686,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dhcp6.c:696,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/dhcp6.c:697,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp6.c:701,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:709,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp6.c:710,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/dhcp6.c:715,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/dhcp6.c:728,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/dhcp6.c:730,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:734,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp6.c:735,1
    - Dst: log_context
      Src: /src/dnsmasq/src/dhcp6.c:749,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/dhcp6.c:751,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dhcp6.c:762,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/dhcp6.c:776,1
    - Dst: log_context
      Src: /src/dnsmasq/src/dhcp6.c:785,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 60
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 787
    functionName: construct_worker
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - wildcard_match
    - setaddr6part
    - log_context
    - whine_malloc
    - IN6_ARE_ADDR_EQUAL
    - iface_check
    - IN6_IS_ADDR_LOOPBACK
    - indextoname
    - IN6_IS_ADDR_MULTICAST
    - IN6_IS_ADDR_LINKLOCAL
    - ra_start_unsolicited
    linkageType: ''
    returnType: int
    signature: "int construct_worker(struct in6_addr *local, int prefix, \n\t\t\t
      \   int scope, int if_index, int flags, \n\t\t\t    unsigned int preferred,
      unsigned int valid, void *vparam)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/dhcp6.c:804,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp6.c:813,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/dhcp6.c:824,1
    - Dst: log_context
      Src: /src/dnsmasq/src/dhcp6.c:830,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp6.c:838,1
    - Dst: lease_update_slaac
      Src: /src/dnsmasq/src/dhcp6.c:850,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dhcp6.c:851,1
    - Dst: send_alarm
      Src: /src/dnsmasq/src/dhcp6.c:855,1
    - Dst: periodic_ra
      Src: /src/dnsmasq/src/dhcp6.c:855,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 857
    functionName: dhcp_construct_contexts
    functionSourceFile: /src/dnsmasq/src/dhcp6.c
    functionUses: 0
    functionsReached:
    - option_bool
    - log_context
    - iface_enumerate
    - lease_update_file
    - send_alarm
    - lease_update_slaac
    - free
    - ra_start_unsolicited
    - periodic_ra
    linkageType: ''
    returnType: void
    signature: void dhcp_construct_contexts(time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 42
    functionName: count_labels
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_labels(char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: s1 < s2 && (s2 - s1) >
      Src: /src/dnsmasq/src/dnssec.c:53,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - u32
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: serial_compare_32
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - s1 < s2 && (s2 - s1) >
    linkageType: ''
    returnType: int
    signature: int serial_compare_32(u32 s1, u32 s2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dnsmasq/src/dnssec.c:77,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnssec.c:81,1
    - Dst: time
      Src: /src/dnsmasq/src/dnssec.c:81,1
    - Dst: utimes
      Src: /src/dnsmasq/src/dnssec.c:84,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:85,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:85,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnssec.c:85,1
    - Dst: open
      Src: /src/dnsmasq/src/dnssec.c:95,1
    - Dst: close
      Src: /src/dnsmasq/src/dnssec.c:100,1
    - Dst: utimes
      Src: /src/dnsmasq/src/dnssec.c:105,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 111
    functionName: setup_timestamp
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - time
    - stat
    - difftime
    - my_syslog
    - close
    - _
    - strerror
    - utimes
    - open
    linkageType: ''
    returnType: int
    signature: int setup_timestamp(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/dnssec.c:126,1
    - Dst: utimes
      Src: /src/dnsmasq/src/dnssec.c:128,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:129,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:129,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnssec.c:129,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:131,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:131,1
    - Dst: queue_event
      Src: /src/dnsmasq/src/dnssec.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - curtime
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: is_check_date
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - difftime
    - my_syslog
    - _
    - strerror
    - utimes
    - queue_event
    linkageType: ''
    returnType: int
    signature: int is_check_date(unsigned long curtime)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:194,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/dnssec.c:195,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 3
    argNames:
    - header
    - plen
    - state
    argTypes:
    - struct dns_header*
    - size_t
    - struct rdata_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 218
    functionName: get_rdata
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - extract_name
    - to_wire
    linkageType: ''
    returnType: int
    signature: int get_rdata(struct dns_header *header, size_t plen, struct rdata_state
      *state)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: skip_name
      Src: /src/dnsmasq/src/dnssec.c:236,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/dnssec.c:237,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:244,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:245,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:250,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:251,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:262,1
    - Dst: get_rdata
      Src: /src/dnsmasq/src/dnssec.c:286,1
    - Dst: get_rdata
      Src: /src/dnsmasq/src/dnssec.c:287,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 7
    argNames:
    - header
    - plen
    - rr_desc
    - rrsetidx
    - rrset
    - buff1
    - buff2
    argTypes:
    - struct dns_header*
    - size_t
    - short*
    - int
    - unsigned char**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 316
    functionName: sort_rrset
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - CHECK_LEN
    - GETSHORT
    - memcmp
    - get_rdata
    - skip_name
    linkageType: ''
    returnType: int
    signature: "int sort_rrset(struct dns_header *header, size_t plen, short *rr_desc,
      int rrsetidx, \n\t\t      unsigned char **rrset, char *buff1, char *buff2)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/dnssec.c:330,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:334,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:334,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:342,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:345,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:346,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:351,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:353,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:360,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:371,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:377,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:384,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dnssec.c:396,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dnssec.c:397,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:407,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:417,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 8
    argNames:
    - header
    - plen
    - class
    - type
    - name
    - keyname
    - sigcnt
    - rrcnt
    argTypes:
    - struct dns_header*
    - size_t
    - int
    - int
    - char*
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 425
    functionName: explore_rrset
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - expand_workspace
    - extract_name
    - ADD_RDLEN
    - skip_questions
    - ntohs
    - CHECK_LEN
    - hostname_isequal
    - GETSHORT
    - strchr
    linkageType: ''
    returnType: int
    signature: "int explore_rrset(struct dns_header *header, size_t plen, int class,
      int type, \n\t\t\t char *name, char *keyname, int *sigcnt, int *rrcnt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:431,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - counter
    - message
    argTypes:
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 436
    functionName: dec_counter
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    linkageType: ''
    returnType: int
    signature: int dec_counter(int *counter, char *message)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: rrfilter_desc
      Src: /src/dnsmasq/src/dnssec.c:464,1
    - Dst: time
      Src: /src/dnsmasq/src/dnssec.c:468,1
    - Dst: is_check_date
      Src: /src/dnsmasq/src/dnssec.c:469,1
    - Dst: count_labels
      Src: /src/dnsmasq/src/dnssec.c:474,1
    - Dst: sort_rrset
      Src: /src/dnsmasq/src/dnssec.c:479,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:494,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:495,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:501,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:502,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:503,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:504,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:506,1
    - Dst: serial_compare_32
      Src: /src/dnsmasq/src/dnssec.c:514,1
    - Dst: serial_compare_32
      Src: /src/dnsmasq/src/dnssec.c:519,1
    - Dst: hash_find
      Src: /src/dnsmasq/src/dnssec.c:525,1
    - Dst: algo_digest_name
      Src: /src/dnsmasq/src/dnssec.c:525,1
    - Dst: hash_init
      Src: /src/dnsmasq/src/dnssec.c:531,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:535,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnssec.c:544,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnssec.c:545,1
    - Dst: htonl
      Src: /src/dnsmasq/src/dnssec.c:553,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:555,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/dnssec.c:556,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:557,1
    - Dst: from_wire
      Src: /src/dnsmasq/src/dnssec.c:558,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:571,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/dnssec.c:594,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:595,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:596,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:597,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:600,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:601,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:613,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:614,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:615,1
    - Dst: get_rdata
      Src: /src/dnsmasq/src/dnssec.c:627,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:631,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:632,1
    - Dst: get_rdata
      Src: /src/dnsmasq/src/dnssec.c:643,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:649,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:656,1
    - Dst: struct nettle_hash*::digest
      Src: /src/dnsmasq/src/dnssec.c:660,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:664,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:671,1
    - Dst: verify
      Src: /src/dnsmasq/src/dnssec.c:674,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:681,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:686,1
    - Dst: verify
      Src: /src/dnsmasq/src/dnssec.c:689,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:697,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:697,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 132
    argCount: 16
    argNames:
    - now
    - header
    - plen
    - class
    - type
    - sigidx
    - rrsetidx
    - name
    - keyname
    - wildcard_out
    - key
    - keylen
    - algo_in
    - keytag_in
    - ttl_out
    - validate_counter
    argTypes:
    - time_t
    - struct dns_header*
    - size_t
    - int
    - int
    - int
    - int
    - char*
    - char*
    - char**
    - struct blockdata*
    - int
    - int
    - int
    - unsigned long*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 457
    functionDepth: 3
    functionLinenumber: 457
    functionLinenumberEnd: 705
    functionName: validate_rrset
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - count_labels
    - hash_find
    - CHECK_LEN
    - cache_find_by_name
    - hash_init
    - htonl
    - is_check_date
    - get_rdata
    - htons
    - sort_rrset
    - dec_counter
    - extract_name
    - from_wire
    - struct nettle_hash*::digest
    - GETSHORT
    - verify
    - _
    - algo_digest_name
    - time
    - difftime
    - serial_compare_32
    - struct nettle_hash*::update
    - to_wire
    - GETLONG
    - rrfilter_desc
    linkageType: ''
    returnType: int
    signature: "int validate_rrset(time_t now, struct dns_header *header, size_t plen,
      int class, int type, int sigidx, int rrsetidx, \n\t\t\t  char *name, char *keyname,
      char **wildcard_out, struct blockdata *key, int keylen,\n\t\t\t  int algo_in,
      int keytag_in, unsigned long *ttl_out, int *validate_counter)"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:730,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:730,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:730,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:733,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:734,1
    - Dst: explore_rrset
      Src: /src/dnsmasq/src/dnssec.c:737,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:745,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dnssec.c:747,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:752,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:755,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:758,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:759,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:760,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:761,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:763,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:777,1
    - Dst: dnskey_keytag
      Src: /src/dnsmasq/src/dnssec.c:785,1
    - Dst: memset
      Src: /src/dnsmasq/src/dnssec.c:796,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:798,1
    - Dst: hash_find
      Src: /src/dnsmasq/src/dnssec.c:811,1
    - Dst: ds_digest_name
      Src: /src/dnsmasq/src/dnssec.c:811,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/dnssec.c:817,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:825,1
    - Dst: hash_init
      Src: /src/dnsmasq/src/dnssec.c:828,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/dnssec.c:831,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:838,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:839,1
    - Dst: struct nettle_hash*::digest
      Src: /src/dnsmasq/src/dnssec.c:840,1
    - Dst: from_wire
      Src: /src/dnsmasq/src/dnssec.c:842,1
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/dnssec.c:849,1
    - Dst: free
      Src: /src/dnsmasq/src/dnssec.c:854,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dnssec.c:865,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dnssec.c:869,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:875,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/dnssec.c:883,1
    - Dst: validate_rrset
      Src: /src/dnsmasq/src/dnssec.c:886,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/dnssec.c:889,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:891,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:896,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/dnssec.c:900,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/dnssec.c:902,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:904,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:907,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:910,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:911,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:912,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:913,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:919,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:929,1
    - Dst: dnskey_keytag
      Src: /src/dnsmasq/src/dnssec.c:933,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/dnssec.c:935,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/dnssec.c:944,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/dnssec.c:948,1
    - Dst: algo_digest_name
      Src: /src/dnsmasq/src/dnssec.c:954,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:955,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:957,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/dnssec.c:965,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:971,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 137
    argCount: 7
    argNames:
    - now
    - header
    - plen
    - name
    - keyname
    - class
    - validate_counter
    argTypes:
    - time_t
    - struct dns_header*
    - size_t
    - char*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 717
    functionDepth: 4
    functionLinenumber: 717
    functionLinenumberEnd: 973
    functionName: dnssec_validate_by_ds
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 2
    functionsReached:
    - ntohs
    - CHECK_LEN
    - cache_find_by_name
    - hash_find
    - hash_init
    - cache_end_insert
    - validate_rrset
    - ds_digest_name
    - skip_questions
    - STAT_ISEQUAL
    - whine_malloc
    - blockdata_free
    - memcpy
    - dec_counter
    - extract_name
    - cache_insert
    - from_wire
    - log_query
    - struct nettle_hash*::digest
    - GETSHORT
    - whine_malloc::whine_malloc
    - free
    - RCODE
    - algo_digest_name
    - strcpy
    - memset
    - blockdata_retrieve
    - struct nettle_hash*::update
    - to_wire
    - explore_rrset
    - GETLONG
    - memcmp
    - blockdata_alloc
    - dnskey_keytag
    - cache_start_insert
    linkageType: ''
    returnType: int
    signature: "int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t
      plen, char *name,\n\t\t\t  char *keyname, int class, int *validate_counter)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:1003,1
    - Dst: dnssec_validate_reply
      Src: /src/dnsmasq/src/dnssec.c:1006,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1009,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1010,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1013,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1014,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:1021,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnssec.c:1023,1
    - Dst: in_arpa_name_2_addr
      Src: /src/dnsmasq/src/dnssec.c:1024,1
    - Dst: private_net6
      Src: /src/dnsmasq/src/dnssec.c:1025,1
    - Dst: private_net
      Src: /src/dnsmasq/src/dnssec.c:1025,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:1027,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:1027,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/dnssec.c:1032,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:1034,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:1034,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:1041,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:1041,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:1042,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:1048,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dnssec.c:1048,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:1053,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:1057,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/dnssec.c:1064,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1066,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1070,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1073,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1074,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:1075,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1076,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:1078,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1091,1
    - Dst: ds_digest_name
      Src: /src/dnsmasq/src/dnssec.c:1095,1
    - Dst: algo_digest_name
      Src: /src/dnsmasq/src/dnssec.c:1095,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:1100,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/dnssec.c:1103,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/dnssec.c:1111,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/dnssec.c:1115,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:1123,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/dnssec.c:1132,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:1143,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/dnssec.c:1150,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnssec.c:1152,1
    - Dst: _
      Src: /src/dnsmasq/src/dnssec.c:1152,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/dnssec.c:1162,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/dnssec.c:1165,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/dnssec.c:1168,1
    - Dst: log_query
      Src: /src/dnsmasq/src/dnssec.c:1171,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 106
    argCount: 7
    argNames:
    - now
    - header
    - plen
    - name
    - keyname
    - class
    - validate_counter
    argTypes:
    - time_t
    - struct dns_header*
    - size_t
    - char*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1175
    functionName: dnssec_validate_ds
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 2
    functionsReached:
    - ntohs
    - hostname_isequal
    - CHECK_LEN
    - cache_end_insert
    - ds_digest_name
    - STAT_ISEQUAL
    - private_net6
    - in_arpa_name_2_addr
    - blockdata_free
    - extract_name
    - cache_insert
    - log_query
    - option_bool
    - my_syslog
    - GETSHORT
    - _
    - RCODE
    - algo_digest_name
    - GETLONG
    - blockdata_alloc
    - private_net
    - dnssec_validate_reply
    - cache_start_insert
    - lookup_domain
    linkageType: ''
    returnType: int
    signature: "int dnssec_validate_ds(time_t now, struct dns_header *header, size_t
      plen, char *name,\n\t\t       char *keyname, int class, int *validate_counter)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:1184,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:1185,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1240
    functionName: hostname_cmp
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int hostname_cmp(const char *a, const char *b)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1261,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1264,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1267,1
    - Dst: count_labels
      Src: /src/dnsmasq/src/dnssec.c:1273,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/dnssec.c:1302,1
    - Dst: hostname_cmp
      Src: /src/dnsmasq/src/dnssec.c:1305,1
    - Dst: hostname_cmp
      Src: /src/dnsmasq/src/dnssec.c:1357,1
    - Dst: hostname_cmp
      Src: /src/dnsmasq/src/dnssec.c:1357,1
    - Dst: hostname_cmp
      Src: /src/dnsmasq/src/dnssec.c:1363,1
    - Dst: hostname_cmp
      Src: /src/dnsmasq/src/dnssec.c:1363,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 63
    argCount: 10
    argNames:
    - header
    - plen
    - nsecs
    - labels
    - nsec_count
    - workspace1_in
    - workspace2
    - name
    - type
    - nons
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char**
    - unsigned char**
    - int
    - char*
    - char*
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1243
    functionDepth: 1
    functionLinenumber: 1243
    functionLinenumberEnd: 1369
    functionName: prove_non_existence_nsec
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - extract_name
    - count_labels
    - hostname_cmp
    - GETSHORT
    - hostname_issubdomain
    linkageType: ''
    returnType: int
    signature: "int prove_non_existence_nsec(struct dns_header *header, size_t plen,
      unsigned char **nsecs, unsigned char **labels, int nsec_count,\n\t\t\t\t    char
      *workspace1_in, char *workspace2, char *name, int type, int *nons)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_init
      Src: /src/dnsmasq/src/dnssec.c:1379,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:1382,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/dnssec.c:1382,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:1383,1
    - Dst: struct nettle_hash*::digest
      Src: /src/dnsmasq/src/dnssec.c:1384,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:1388,1
    - Dst: struct nettle_hash*::update
      Src: /src/dnsmasq/src/dnssec.c:1389,1
    - Dst: struct nettle_hash*::digest
      Src: /src/dnsmasq/src/dnssec.c:1390,1
    - Dst: from_wire
      Src: /src/dnsmasq/src/dnssec.c:1393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 6
    argNames:
    - in
    - out
    - hash
    - salt
    - salt_len
    - iterations
    argTypes:
    - char*
    - unsigned char**
    - struct nettle_hash*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1372
    functionDepth: 1
    functionLinenumber: 1372
    functionLinenumberEnd: 1397
    functionName: hash_name
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - from_wire
    - struct nettle_hash*::update
    - struct nettle_hash*::digest
    - to_wire
    - hash_init
    linkageType: ''
    returnType: int
    signature: "int hash_name(char *in, unsigned char **out, struct nettle_hash const
      *hash, \n\t\t     unsigned char *salt, int salt_len, int iterations)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1431
    functionName: base32_decode
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int base32_decode(char *in, unsigned char *out)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1442,1
    - Dst: base32_decode
      Src: /src/dnsmasq/src/dnssec.c:1443,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1447,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1461,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1521,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1521,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1532,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1532,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 57
    argCount: 11
    argNames:
    - header
    - plen
    - digest_len
    - digest
    - type
    - workspace1
    - workspace2
    - nsecs
    - nsec_count
    - nons
    - name_labels
    argTypes:
    - struct dns_header*
    - size_t
    - int
    - unsigned char*
    - int
    - char*
    - char*
    - unsigned char**
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1433
    functionDepth: 1
    functionLinenumber: 1433
    functionLinenumberEnd: 1544
    functionName: check_nsec3_coverage
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - extract_name
    - base32_decode
    - memcmp
    - GETSHORT
    linkageType: ''
    returnType: int
    signature: "int check_nsec3_coverage(struct dns_header *header, size_t plen, int
      digest_len, unsigned char *digest, int type,\n\t\t\t\tchar *workspace1, char
      *workspace2, unsigned char **nsecs, int nsec_count, int *nons, int name_labels)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: skip_name
      Src: /src/dnsmasq/src/dnssec.c:1567,1
    - Dst: hash_find
      Src: /src/dnsmasq/src/dnssec.c:1573,1
    - Dst: nsec3_digest_name
      Src: /src/dnsmasq/src/dnssec.c:1573,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1583,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/dnssec.c:1599,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1613,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1620,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:1627,1
    - Dst: hash_name
      Src: /src/dnsmasq/src/dnssec.c:1630,1
    - Dst: check_nsec3_coverage
      Src: /src/dnsmasq/src/dnssec.c:1633,1
    - Dst: count_labels
      Src: /src/dnsmasq/src/dnssec.c:1633,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dnssec.c:1646,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:1649,1
    - Dst: hash_name
      Src: /src/dnsmasq/src/dnssec.c:1652,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1658,1
    - Dst: base32_decode
      Src: /src/dnsmasq/src/dnssec.c:1661,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dnssec.c:1665,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dnssec.c:1674,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:1680,1
    - Dst: hash_name
      Src: /src/dnsmasq/src/dnssec.c:1683,1
    - Dst: check_nsec3_coverage
      Src: /src/dnsmasq/src/dnssec.c:1686,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dnssec.c:1692,1
    - Dst: dec_counter
      Src: /src/dnsmasq/src/dnssec.c:1698,1
    - Dst: hash_name
      Src: /src/dnsmasq/src/dnssec.c:1701,1
    - Dst: check_nsec3_coverage
      Src: /src/dnsmasq/src/dnssec.c:1704,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 89
    argCount: 11
    argNames:
    - header
    - plen
    - nsecs
    - nsec_count
    - workspace1
    - workspace2
    - name
    - type
    - wildname
    - nons
    - validate_counter
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char**
    - int
    - char*
    - char*
    - char*
    - int
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1709
      start: 1547
    functionDepth: 2
    functionLinenumber: 1547
    functionLinenumberEnd: 1709
    functionName: prove_non_existence_nsec3
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - check_nsec3_coverage
    - extract_name
    - count_labels
    - nsec3_digest_name
    - hash_find
    - hostname_isequal
    - GETSHORT
    - memcmp
    - skip_name
    - base32_decode
    - strchr
    - hash_name
    - dec_counter
    linkageType: ''
    returnType: int
    signature: "int prove_non_existence_nsec3(struct dns_header *header, size_t plen,
      unsigned char **nsecs, int nsec_count, char *workspace1,\n\t\t\t\t     char
      *workspace2, char *name, int type, char *wildname, int *nons, int *validate_counter)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/dnssec.c:1719,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/dnssec.c:1724,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1724,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1729,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1733,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1736,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1737,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:1738,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1739,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:1741,1
    - Dst: if
      Src: /src/dnsmasq/src/dnssec.c:1746,1
    - Dst: if
      Src: /src/dnsmasq/src/dnssec.c:1749,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1749,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1750,1
    - Dst: if
      Src: /src/dnsmasq/src/dnssec.c:1755,1
    - Dst: if
      Src: /src/dnsmasq/src/dnssec.c:1760,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:1760,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:1775,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1780,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:1784,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1787,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1788,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1790,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/dnssec.c:1794,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:1804,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 10
    argNames:
    - header
    - plen
    - keyname
    - name
    - qtype
    - qclass
    - wildname
    - nons
    - nsec_ttl
    - validate_counter
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    - char*
    - int
    - int
    - char*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1712
    functionDepth: 1
    functionLinenumber: 1712
    functionLinenumberEnd: 1856
    functionName: prove_non_existence
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - if
    - extract_name
    - expand_workspace
    - skip_questions
    - ntohs
    - CHECK_LEN
    - GETSHORT
    - GETLONG
    - skip_section
    linkageType: ''
    returnType: int
    signature: "int prove_non_existence(struct dns_header *header, size_t plen, char
      *keyname, char *name, int qtype, int qclass,\n\t\t\t       char *wildname, int
      *nons, int *nsec_ttl, int *validate_counter)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:1876,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dnssec.c:1884,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:1889,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dnssec.c:1899,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:1901,1
    - Dst: ds_digest_name
      Src: /src/dnsmasq/src/dnssec.c:1927,1
    - Dst: algo_digest_name
      Src: /src/dnsmasq/src/dnssec.c:1928,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/dnssec.c:1931,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 33
    argCount: 4
    argNames:
    - name
    - class
    - keyname
    - now
    argTypes:
    - char*
    - int
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1874
    functionDepth: 1
    functionLinenumber: 1874
    functionLinenumberEnd: 1949
    functionName: zone_status
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 0
    functionsReached:
    - strcpy
    - cache_find_by_name
    - strchr
    - strlen
    - algo_digest_name
    - ds_digest_name
    linkageType: ''
    returnType: int
    signature: int zone_status(char *name, int class, char *keyname, time_t now)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1981,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1981,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dnssec.c:1983,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1983,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1983,1
    - Dst: free
      Src: /src/dnsmasq/src/dnssec.c:1988,1
    - Dst: daemon::daemon
      Src: /src/dnsmasq/src/dnssec.c:1989,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1990,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1990,1
    - Dst: memset
      Src: /src/dnsmasq/src/dnssec.c:1993,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:1998,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:1998,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:2001,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/dnssec.c:2001,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:2010,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2016,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2019,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2020,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2028,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/dnssec.c:2030,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2033,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2034,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2036,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/dnssec.c:2043,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:2049,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2056,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2058,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2061,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2062,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2064,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:2068,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2073,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2079,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2081,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2084,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2085,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/dnssec.c:2086,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2087,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:2091,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:2096,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:2096,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2098,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/dnssec.c:2106,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/dnssec.c:2107,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:2108,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnssec.c:2108,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dnssec.c:2114,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2127,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2141,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2141,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:2143,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2146,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2149,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2150,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2152,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2165,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2168,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2169,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dnssec.c:2171,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/dnssec.c:2176,1
    - Dst: explore_rrset
      Src: /src/dnsmasq/src/dnssec.c:2189,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2198,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dnssec.c:2206,1
    - Dst: zone_status
      Src: /src/dnsmasq/src/dnssec.c:2208,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2209,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2218,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dnssec.c:2226,1
    - Dst: zone_status
      Src: /src/dnsmasq/src/dnssec.c:2227,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2229,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2229,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2229,1
    - Dst: validate_rrset
      Src: /src/dnsmasq/src/dnssec.c:2240,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2243,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2243,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2243,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2243,1
    - Dst: if
      Src: /src/dnsmasq/src/dnssec.c:2245,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2262,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2276,1
    - Dst: prove_non_existence
      Src: /src/dnsmasq/src/dnssec.c:2277,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2285,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/dnssec.c:2296,1
    - Dst: prove_non_existence
      Src: /src/dnsmasq/src/dnssec.c:2305,1
    - Dst: STAT_ISEQUAL
      Src: /src/dnsmasq/src/dnssec.c:2315,1
    - Dst: zone_status
      Src: /src/dnsmasq/src/dnssec.c:2315,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 177
    argCount: 11
    argNames:
    - now
    - header
    - plen
    - name
    - keyname
    - class
    - check_unsigned
    - neganswer
    - nons
    - nsec_ttl
    - validate_counter
    argTypes:
    - time_t
    - struct dns_header*
    - size_t
    - char*
    - char*
    - int*
    - int
    - int*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2327
      start: 1967
    functionDepth: 4
    functionLinenumber: 1967
    functionLinenumberEnd: 2327
    functionName: dnssec_validate_reply
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 3
    functionsReached:
    - ADD_RDLEN
    - ntohs
    - hostname_isequal
    - hostname_issubdomain
    - strlen
    - validate_rrset
    - if
    - STAT_ISEQUAL
    - whine_malloc
    - prove_non_existence
    - expand_workspace
    - extract_name
    - GETSHORT
    - free
    - RCODE
    - zone_status
    - strcpy
    - memset
    - daemon::daemon
    - explore_rrset
    - GETLONG
    - skip_name
    linkageType: ''
    returnType: int
    signature: "int dnssec_validate_reply(time_t now, struct dns_header *header, size_t
      plen, char *name, char *keyname, \n\t\t\t  int *class, int check_unsigned, int
      *neganswer, int *nons, int *nsec_ttl, int *validate_counter)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - alg
    - flags
    - key
    - keylen
    argTypes:
    - int
    - int
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2331
    functionDepth: 0
    functionLinenumber: 2331
    functionLinenumberEnd: 2350
    functionName: dnskey_keytag
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dnskey_keytag(int alg, int flags, unsigned char *key, int keylen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:2357,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:2358,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:2359,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:2360,1
    - Dst: htons
      Src: /src/dnsmasq/src/dnssec.c:2361,1
    - Dst: SET_OPCODE
      Src: /src/dnsmasq/src/dnssec.c:2364,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnssec.c:2367,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/dnssec.c:2371,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dnssec.c:2373,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/dnssec.c:2374,1
    - Dst: add_do_bit
      Src: /src/dnsmasq/src/dnssec.c:2376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 6
    argNames:
    - header
    - end
    - name
    - class
    - id
    - type
    argTypes:
    - struct dns_header*
    - unsigned char*
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2352
    functionDepth: 4
    functionLinenumber: 2352
    functionLinenumberEnd: 2377
    functionName: dnssec_generate_query
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 2
    functionsReached:
    - add_do_bit
    - option_bool
    - do_rfc1035_name
    - PUTSHORT
    - htons
    - SET_OPCODE
    linkageType: ''
    returnType: size_t
    signature: "size_t dnssec_generate_query(struct dns_header *header, unsigned char
      *end, char *name,\n\t\t\t     int class, int id, int type)"
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2407
      start: 2379
    functionDepth: 0
    functionLinenumber: 2379
    functionLinenumberEnd: 2407
    functionName: errflags_to_ede
    functionSourceFile: /src/dnsmasq/src/dnssec.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int errflags_to_ede(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 22
    functionName: IN6_IS_ADDR_ULA
    functionSourceFile: /src/dnsmasq/src/ip6addr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_ADDR_ULA(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: IN6_IS_ADDR_ULA_ZERO
    functionSourceFile: /src/dnsmasq/src/ip6addr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_ADDR_ULA_ZERO(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: IN6_IS_ADDR_LINK_LOCAL_ZERO
    functionSourceFile: /src/dnsmasq/src/ip6addr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_ADDR_LINK_LOCAL_ZERO(a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nft_ctx_new
      Src: /src/dnsmasq/src/nftset.c:33,1
    - Dst: die
      Src: /src/dnsmasq/src/nftset.c:35,1
    - Dst: _
      Src: /src/dnsmasq/src/nftset.c:35,1
    - Dst: nft_ctx_buffer_error
      Src: /src/dnsmasq/src/nftset.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: nftset_init
    functionSourceFile: /src/dnsmasq/src/nftset.c
    functionUses: 0
    functionsReached:
    - nft_ctx_buffer_error
    - nft_ctx_new
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void nftset_init()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/nftset.c:51,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/nftset.c:67,1
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/nftset.c:71,1
    - Dst: free
      Src: /src/dnsmasq/src/nftset.c:75,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/nftset.c:78,1
    - Dst: nft_run_cmd_from_buffer
      Src: /src/dnsmasq/src/nftset.c:81,1
    - Dst: nft_ctx_get_error_buffer
      Src: /src/dnsmasq/src/nftset.c:82,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/nftset.c:87,1
    - Dst: strlen
      Src: /src/dnsmasq/src/nftset.c:87,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/nftset.c:89,1
    - Dst: strchr
      Src: /src/dnsmasq/src/nftset.c:90,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/nftset.c:92,1
    - Dst: free
      Src: /src/dnsmasq/src/nftset.c:93,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 4
    argNames:
    - setname
    - ipaddr
    - flags
    - remove
    argTypes:
    - char*
    - union all_addr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 98
    functionName: add_to_nftset
    functionSourceFile: /src/dnsmasq/src/nftset.c
    functionUses: 0
    functionsReached:
    - strcpy
    - nft_ctx_get_error_buffer
    - nft_run_cmd_from_buffer
    - snprintf
    - whine_malloc
    - my_syslog
    - whine_malloc::whine_malloc
    - strchr
    - free
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: int add_to_nftset(const char *setname, const union all_addr *ipaddr,
      int flags, int remove)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: get_metric_name
    functionSourceFile: /src/dnsmasq/src/metrics.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * get_metric_name(int i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 73
    functionName: clear_metrics
    functionSourceFile: /src/dnsmasq/src/metrics.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clear_metrics(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: expand_buf
      Src: /src/dnsmasq/src/radv.c:83,1
    - Dst: ICMP6_FILTER_SETBLOCKALL
      Src: /src/dnsmasq/src/radv.c:92,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/dnsmasq/src/radv.c:95,1
    - Dst: ICMP6_FILTER_SETPASS
      Src: /src/dnsmasq/src/radv.c:97,1
    - Dst: socket
      Src: /src/dnsmasq/src/radv.c:100,1
    - Dst: getsockopt
      Src: /src/dnsmasq/src/radv.c:101,1
    - Dst: defined
      Src: /src/dnsmasq/src/radv.c:102,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/radv.c:103,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/radv.c:105,1
    - Dst: set_ipv6pktinfo
      Src: /src/dnsmasq/src/radv.c:106,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/radv.c:107,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/radv.c:108,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/radv.c:109,1
    - Dst: _
      Src: /src/dnsmasq/src/radv.c:110,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/radv.c:115,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 17
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 116
    functionName: ra_init
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - expand_buf
    - set_ipv6pktinfo
    - fix_fd
    - defined
    - _
    - ICMP6_FILTER_SETPASS
    - ICMP6_FILTER_SETBLOCKALL
    - getsockopt
    - socket
    - ra_start_unsolicited
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void ra_init(time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rand16
      Src: /src/dnsmasq/src/radv.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - now
    - context
    argTypes:
    - time_t
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 139
    functionName: ra_start_unsolicited
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 3
    functionsReached:
    - rand16
    linkageType: ''
    returnType: void
    signature: void ra_start_unsolicited(time_t now, struct dhcp_context *context)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/radv.c:150,1
    - Dst: recv_dhcp_packet
      Src: /src/dnsmasq/src/radv.c:165,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/radv.c:170,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/radv.c:170,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/radv.c:177,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/radv.c:182,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/radv.c:185,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/radv.c:190,1
    - Dst: lease_ping_reply
      Src: /src/dnsmasq/src/radv.c:197,1
    - Dst: dump_packet_icmp
      Src: /src/dnsmasq/src/radv.c:207,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/radv.c:220,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/radv.c:225,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/radv.c:226,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/radv.c:233,1
    - Dst: wildcard_matchn
      Src: /src/dnsmasq/src/radv.c:237,1
    - Dst: send_ra_alias
      Src: /src/dnsmasq/src/radv.c:241,1
    - Dst: send_ra
      Src: /src/dnsmasq/src/radv.c:253,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/radv.c:253,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 54
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 255
    functionName: icmp6_packet
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - send_ra
    - IN6_IS_ADDR_UNSPECIFIED
    - wildcard_match
    - if_nametoindex
    - send_ra_alias
    - option_bool
    - CMSG_NXTHDR
    - CMSG_DATA
    - lease_ping_reply
    - print_mac
    - CMSG_FIRSTHDR
    - indextoname
    - recv_dhcp_packet
    - iface_check
    - CMSG_SPACE
    - dump_packet_icmp
    - wildcard_matchn
    - my_syslog
    linkageType: ''
    returnType: void
    signature: void icmp6_packet(time_t now)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: find_iface_param
      Src: /src/dnsmasq/src/radv.c:265,1
    - Dst: calc_interval
      Src: /src/dnsmasq/src/radv.c:281,1
    - Dst: calc_prio
      Src: /src/dnsmasq/src/radv.c:282,1
    - Dst: reset_counter
      Src: /src/dnsmasq/src/radv.c:284,1
    - Dst: expand
      Src: /src/dnsmasq/src/radv.c:286,1
    - Dst: htons
      Src: /src/dnsmasq/src/radv.c:293,1
    - Dst: calc_lifetime
      Src: /src/dnsmasq/src/radv.c:293,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/radv.c:310,1
    - Dst: difftime
      Src: /src/dnsmasq/src/radv.c:334,1
    - Dst: new_timeout
      Src: /src/dnsmasq/src/radv.c:343,1
    - Dst: free
      Src: /src/dnsmasq/src/radv.c:346,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/radv.c:357,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/radv.c:357,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/radv.c:373,1
    - Dst: expand
      Src: /src/dnsmasq/src/radv.c:380,1
    - Dst: htonl
      Src: /src/dnsmasq/src/radv.c:389,1
    - Dst: htonl
      Src: /src/dnsmasq/src/radv.c:390,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/radv.c:394,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/radv.c:395,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/radv.c:396,1
    - Dst: htons
      Src: /src/dnsmasq/src/radv.c:408,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:418,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:419,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/radv.c:420,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/radv.c:422,1
    - Dst: calc_interval
      Src: /src/dnsmasq/src/radv.c:422,1
    - Dst: find_iface_param
      Src: /src/dnsmasq/src/radv.c:422,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/radv.c:435,1
    - Dst: fopen
      Src: /src/dnsmasq/src/radv.c:436,1
    - Dst: fgets
      Src: /src/dnsmasq/src/radv.c:438,1
    - Dst: atoi
      Src: /src/dnsmasq/src/radv.c:439,1
    - Dst: fclose
      Src: /src/dnsmasq/src/radv.c:440,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:446,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:447,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/radv.c:448,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/radv.c:449,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/radv.c:452,1
    - Dst: option_filter
      Src: /src/dnsmasq/src/radv.c:455,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/radv.c:478,1
    - Dst: IN6_IS_ADDR_ULA_ZERO
      Src: /src/dnsmasq/src/radv.c:479,1
    - Dst: IN6_IS_ADDR_LINK_LOCAL_ZERO
      Src: /src/dnsmasq/src/radv.c:480,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:485,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:486,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/radv.c:487,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/radv.c:488,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/radv.c:491,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:494,1
    - Dst: IN6_IS_ADDR_ULA_ZERO
      Src: /src/dnsmasq/src/radv.c:496,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:499,1
    - Dst: IN6_IS_ADDR_LINK_LOCAL_ZERO
      Src: /src/dnsmasq/src/radv.c:501,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:504,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:507,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:515,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:516,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/radv.c:517,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/radv.c:518,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:519,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:523,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:530,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/radv.c:531,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/radv.c:532,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/radv.c:533,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/radv.c:534,1
    - Dst: memset
      Src: /src/dnsmasq/src/radv.c:544,1
    - Dst: htons
      Src: /src/dnsmasq/src/radv.c:549,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/radv.c:553,1
    - Dst: IN6_IS_ADDR_MC_LINKLOCAL
      Src: /src/dnsmasq/src/radv.c:554,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/radv.c:559,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/radv.c:560,1
    - Dst: dump_packet_icmp
      Src: /src/dnsmasq/src/radv.c:569,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/radv.c:569,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/radv.c:573,1
    - Dst: sendto
      Src: /src/dnsmasq/src/radv.c:573,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/radv.c:574,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 178
    argCount: 5
    argNames:
    - now
    - iface
    - iface_name
    - dest
    - send_iface
    argTypes:
    - time_t
    - int
    - char*
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 577
    functionName: send_ra_alias
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 1
    functionsReached:
    - put_opt6_char
    - calc_lifetime
    - addr6part
    - calc_prio
    - fclose
    - retry_send
    - reset_counter
    - find_iface_param
    - htonl
    - IN6_IS_ADDR_LINKLOCAL
    - setsockopt
    - IN6_IS_ADDR_UNSPECIFIED
    - setaddr6part
    - inet_pton
    - sprintf
    - iface_enumerate
    - put_opt6_long
    - expand
    - htons
    - fopen
    - fgets
    - put_opt6
    - option_bool
    - my_syslog
    - put_opt6_short
    - free
    - calc_interval
    - inet_ntop
    - memset
    - difftime
    - IN6_IS_ADDR_ULA_ZERO
    - IN6_IS_ADDR_MC_LINKLOCAL
    - dump_packet_icmp
    - option_filter
    - atoi
    - save_counter
    - new_timeout
    - sendto
    - IN6_IS_ADDR_LINK_LOCAL_ZERO
    linkageType: ''
    returnType: void
    signature: void send_ra_alias(time_t now, int iface, char *iface_name, struct
      in6_addr *dest, int send_iface)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_ra_alias
      Src: /src/dnsmasq/src/radv.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - now
    - iface
    - iface_name
    - dest
    argTypes:
    - time_t
    - int
    - char*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 584
    functionName: send_ra
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 1
    functionsReached:
    - send_ra_alias
    linkageType: ''
    returnType: void
    signature: void send_ra(time_t now, int iface, char *iface_name, struct in6_addr
      *dest)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/radv.c:596,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/dnsmasq/src/radv.c:607,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/radv.c:608,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:622,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:623,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/radv.c:640,1
    - Dst: IN6_IS_ADDR_ULA
      Src: /src/dnsmasq/src/radv.c:714,1
    - Dst: expand
      Src: /src/dnsmasq/src/radv.c:735,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/radv.c:739,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/radv.c:739,1
    - Dst: htonl
      Src: /src/dnsmasq/src/radv.c:751,1
    - Dst: htonl
      Src: /src/dnsmasq/src/radv.c:752,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/radv.c:756,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/radv.c:757,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/radv.c:758,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 97
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 764
    functionName: add_prefixes
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - setaddr6part
    - option_bool
    - IN6_IS_ADDR_ULA
    - addr6part
    - my_syslog
    - IN6_IS_ADDR_LOOPBACK
    - IN6_IS_ADDR_MULTICAST
    - expand
    - htonl
    - IN6_IS_ADDR_LINKLOCAL
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: "int add_prefixes(struct in6_addr *local,  int prefix,\n\t\t\tint scope,
      int if_index, int flags, \n\t\t\tunsigned int preferred, unsigned int valid,
      void *vparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/radv.c:775,1
    - Dst: memset
      Src: /src/dnsmasq/src/radv.c:778,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/radv.c:781,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - index
    - type
    - mac
    - maclen
    - parm
    argTypes:
    - int
    - unsigned int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 766
    functionDepth: 1
    functionLinenumber: 766
    functionLinenumberEnd: 787
    functionName: add_lla
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - expand
    linkageType: ''
    returnType: int
    signature: int add_lla(int index, unsigned int type, char *mac, size_t maclen,
      void *parm)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/radv.c:805,1
    - Dst: difftime
      Src: /src/dnsmasq/src/radv.c:808,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/radv.c:818,1
    - Dst: new_timeout
      Src: /src/dnsmasq/src/radv.c:824,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/radv.c:826,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/radv.c:835,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/radv.c:840,1
    - Dst: send_ra
      Src: /src/dnsmasq/src/radv.c:844,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/radv.c:851,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/radv.c:859,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/radv.c:860,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/radv.c:865,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/radv.c:874,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/radv.c:877,1
    - Dst: send_ra_alias
      Src: /src/dnsmasq/src/radv.c:880,1
    - Dst: free
      Src: /src/dnsmasq/src/radv.c:886,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 49
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 789
    functionDepth: 3
    functionLinenumber: 789
    functionLinenumberEnd: 897
    functionName: periodic_ra
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 1
    functionsReached:
    - send_ra
    - wildcard_match
    - if_nametoindex
    - send_ra_alias
    - difftime
    - whine_malloc
    - my_syslog
    - iface_enumerate
    - iface_check
    - indextoname
    - new_timeout
    - free
    linkageType: ''
    returnType: time_t
    signature: time_t periodic_ra(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: if_indextoname
      Src: /src/dnsmasq/src/radv.c:909,1
    - Dst: wildcard_matchn
      Src: /src/dnsmasq/src/radv.c:911,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - index
    - type
    - mac
    - maclen
    - parm
    argTypes:
    - int
    - unsigned int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 919
    functionName: send_ra_to_aliases
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - if_indextoname
    - wildcard_matchn
    linkageType: ''
    returnType: int
    signature: int send_ra_to_aliases(int index, unsigned int type, char *mac, size_t
      maclen, void *parm)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: indextoname
      Src: /src/dnsmasq/src/radv.c:934,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/radv.c:935,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/radv.c:940,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:946,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:947,1
    - Dst: difftime
      Src: /src/dnsmasq/src/radv.c:949,1
    - Dst: new_timeout
      Src: /src/dnsmasq/src/radv.c:957,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:963,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/radv.c:964,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 20
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 971
    functionName: iface_search
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - wildcard_match
    - difftime
    - iface_check
    - indextoname
    - new_timeout
    linkageType: ''
    returnType: int
    signature: "int iface_search(struct in6_addr *local,  int prefix,\n\t\t\tint scope,
      int if_index, int flags, \n\t\t\tunsigned int preferred, unsigned int valid,
      void *vparam)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/radv.c:975,1
    - Dst: rand16
      Src: /src/dnsmasq/src/radv.c:977,1
    - Dst: calc_interval
      Src: /src/dnsmasq/src/radv.c:981,1
    - Dst: find_iface_param
      Src: /src/dnsmasq/src/radv.c:981,1
    - Dst: rand16
      Src: /src/dnsmasq/src/radv.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - context
    - iface_name
    - now
    argTypes:
    - struct dhcp_context*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 973
    functionDepth: 1
    functionLinenumber: 973
    functionLinenumberEnd: 984
    functionName: new_timeout
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 3
    functionsReached:
    - difftime
    - calc_interval
    - find_iface_param
    - rand16
    linkageType: ''
    returnType: void
    signature: void new_timeout(struct dhcp_context *context, char *iface_name, time_t
      now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/radv.c:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - iface
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 995
    functionName: find_iface_param
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 2
    functionsReached:
    - wildcard_match
    linkageType: ''
    returnType: struct ra_interface
    signature: struct ra_interface *find_iface_param(char *iface)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ra
    argTypes:
    - struct ra_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1011
    functionName: calc_interval
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int calc_interval(struct ra_interface *ra)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calc_interval
      Src: /src/dnsmasq/src/radv.c:1015,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ra
    argTypes:
    - struct ra_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1029
    functionName: calc_lifetime
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 1
    functionsReached:
    - calc_interval
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int calc_lifetime(struct ra_interface *ra)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ra
    argTypes:
    - struct ra_interface*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1031
    functionDepth: 0
    functionLinenumber: 1031
    functionLinenumberEnd: 1037
    functionName: calc_prio
    functionSourceFile: /src/dnsmasq/src/radv.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int calc_prio(struct ra_interface *ra)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rrfilter.c:31,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rrfilter.c:43,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rrfilter.c:78,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rrfilter.c:95,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 6
    argNames:
    - namep
    - header
    - plen
    - fixup
    - rrs
    - rr_count
    argTypes:
    - unsigned char**
    - struct dns_header*
    - size_t
    - int
    - unsigned char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 106
    functionName: check_name
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 0
    functionsReached:
    - ADD_RDLEN
    - CHECK_LEN
    linkageType: ''
    returnType: int
    signature: int check_name(unsigned char **namep, struct dns_header *header, size_t
      plen, int fixup, unsigned char **rrs, int rr_count)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrfilter_desc
      Src: /src/dnsmasq/src/rrfilter.c:141,1
    - Dst: check_name
      Src: /src/dnsmasq/src/rrfilter.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 147
    functionName: C_IN::for
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 0
    functionsReached:
    - rrfilter_desc
    - check_name
    linkageType: ''
    returnType: void
    signature: void for (pp = p, d = rrfilter_desc(type); *d != -1; d++)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:173,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/rrfilter.c:174,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rrfilter.c:177,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rrfilter.c:178,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:183,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:183,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:183,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/rrfilter.c:189,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rrfilter.c:192,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rrfilter.c:193,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rrfilter.c:195,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rrfilter.c:197,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:203,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:203,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:213,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rrfilter.c:216,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:227,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rrfilter.c:233,1
    - Dst: expand_workspace
      Src: /src/dnsmasq/src/rrfilter.c:237,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:243,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:245,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:245,1
    - Dst: check_name
      Src: /src/dnsmasq/src/rrfilter.c:261,1
    - Dst: check_rrs
      Src: /src/dnsmasq/src/rrfilter.c:266,1
    - Dst: check_name
      Src: /src/dnsmasq/src/rrfilter.c:272,1
    - Dst: check_rrs
      Src: /src/dnsmasq/src/rrfilter.c:275,1
    - Dst: memmove
      Src: /src/dnsmasq/src/rrfilter.c:283,1
    - Dst: htons
      Src: /src/dnsmasq/src/rrfilter.c:288,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:288,1
    - Dst: htons
      Src: /src/dnsmasq/src/rrfilter.c:289,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:289,1
    - Dst: htons
      Src: /src/dnsmasq/src/rrfilter.c:290,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rrfilter.c:290,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 67
    argCount: 3
    argNames:
    - header
    - plen
    - mode
    argTypes:
    - struct dns_header*
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 293
    functionName: rrfilter
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 4
    functionsReached:
    - expand_workspace
    - ADD_RDLEN
    - check_name
    - memmove
    - ntohs
    - GETSHORT
    - skip_name
    - rr_on_list
    - htons
    - check_rrs
    linkageType: ''
    returnType: size_t
    signature: size_t rrfilter(struct dns_header *header, size_t *plen, int mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 338
    functionName: rrfilter_desc
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: short
    signature: short *rrfilter_desc(int type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: whine_realloc
      Src: /src/dnsmasq/src/rrfilter.c:350,1
    - Dst: memset
      Src: /src/dnsmasq/src/rrfilter.c:353,1
    - Dst: old::old
      Src: /src/dnsmasq/src/rrfilter.c:353,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - wkspc
    - szp
    - new
    argTypes:
    - unsigned char***
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 359
    functionName: expand_workspace
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 4
    functionsReached:
    - memset
    - old::old
    - whine_realloc
    linkageType: ''
    returnType: int
    signature: int expand_workspace(unsigned char ***wkspc, int *szp, int new)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dnsmasq/src/rrfilter.c:396,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 406
    functionName: to_wire
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 4
    functionsReached:
    - memmove
    linkageType: ''
    returnType: int
    signature: int to_wire(char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/dnsmasq/src/rrfilter.c:419,1
    - Dst: memmove
      Src: /src/dnsmasq/src/rrfilter.c:423,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 434
    functionName: from_wire
    functionSourceFile: /src/dnsmasq/src/rrfilter.c
    functionUses: 3
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void from_wire(char *name)
  - BBCount: 78
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:67,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:70,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:72,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:74,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:75,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:77,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/tftp.c:78,1
    - Dst: recvmsg
      Src: /src/dnsmasq/src/tftp.c:96,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/tftp.c:100,1
    - Dst: getsockname
      Src: /src/dnsmasq/src/tftp.c:119,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/tftp.c:134,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/tftp.c:134,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/tftp.c:141,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/tftp.c:148,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/tftp.c:148,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/tftp.c:155,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/tftp.c:164,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/tftp.c:164,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/tftp.c:171,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/tftp.c:182,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/tftp.c:182,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/tftp.c:189,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/tftp.c:196,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/tftp.c:210,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/tftp.c:219,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:221,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/tftp.c:222,1
    - Dst: loopback_exception
      Src: /src/dnsmasq/src/tftp.c:223,1
    - Dst: label_exception
      Src: /src/dnsmasq/src/tftp.c:224,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/tftp.c:232,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/tftp.c:237,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/tftp.c:238,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:251,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/tftp.c:259,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:261,1
    - Dst: handle_tftp
      Src: /src/dnsmasq/src/tftp.c:270,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/tftp.c:287,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:293,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:300,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/tftp.c:309,1
    - Dst: memset
      Src: /src/dnsmasq/src/tftp.c:312,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:314,1
    - Dst: socket
      Src: /src/dnsmasq/src/tftp.c:316,1
    - Dst: free
      Src: /src/dnsmasq/src/tftp.c:318,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/tftp.c:332,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:335,1
    - Dst: bind
      Src: /src/dnsmasq/src/tftp.c:337,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/tftp.c:337,1
    - Dst: defined
      Src: /src/dnsmasq/src/tftp.c:338,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/tftp.c:339,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/tftp.c:341,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:348,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:350,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:354,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:354,1
    - Dst: free_transfer
      Src: /src/dnsmasq/src/tftp.c:356,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:367,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:368,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:368,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:369,1
    - Dst: next
      Src: /src/dnsmasq/src/tftp.c:371,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:372,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:372,1
    - Dst: next
      Src: /src/dnsmasq/src/tftp.c:373,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:373,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:373,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:374,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:374,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:379,1
    - Dst: next
      Src: /src/dnsmasq/src/tftp.c:382,1
    - Dst: next
      Src: /src/dnsmasq/src/tftp.c:382,1
    - Dst: atoi
      Src: /src/dnsmasq/src/tftp.c:384,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:386,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:386,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:400,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:405,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/tftp.c:413,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:430,1
    - Dst: tolower
      Src: /src/dnsmasq/src/tftp.c:431,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/tftp.c:433,1
    - Dst: strncat
      Src: /src/dnsmasq/src/tftp.c:438,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:438,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:439,1
    - Dst: strncat
      Src: /src/dnsmasq/src/tftp.c:440,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:440,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:442,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:444,1
    - Dst: strncat
      Src: /src/dnsmasq/src/tftp.c:447,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:447,1
    - Dst: strncat
      Src: /src/dnsmasq/src/tftp.c:448,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:448,1
    - Dst: stat
      Src: /src/dnsmasq/src/tftp.c:451,1
    - Dst: S_ISDIR
      Src: /src/dnsmasq/src/tftp.c:451,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:455,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/tftp.c:464,1
    - Dst: find_mac
      Src: /src/dnsmasq/src/tftp.c:471,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:476,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/tftp.c:479,1
    - Dst: stat
      Src: /src/dnsmasq/src/tftp.c:483,1
    - Dst: S_ISDIR
      Src: /src/dnsmasq/src/tftp.c:483,1
    - Dst: strstr
      Src: /src/dnsmasq/src/tftp.c:491,1
    - Dst: strncat
      Src: /src/dnsmasq/src/tftp.c:499,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:499,1
    - Dst: check_tftp_fileperm
      Src: /src/dnsmasq/src/tftp.c:502,1
    - Dst: get_block
      Src: /src/dnsmasq/src/tftp.c:509,1
    - Dst: tftp_err_oops
      Src: /src/dnsmasq/src/tftp.c:510,1
    - Dst: send_from
      Src: /src/dnsmasq/src/tftp.c:519,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:519,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/tftp.c:522,1
    - Dst: free_transfer
      Src: /src/dnsmasq/src/tftp.c:527,1
    CyclomaticComplexity: 127
    EdgeCount: 127
    ICount: 261
    argCount: 2
    argNames:
    - listen
    - now
    argTypes:
    - struct listener*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 533
    functionName: tftp_request
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 0
    functionsReached:
    - stat
    - bind
    - safe_strncpy
    - ntohs
    - CMSG_DATA
    - iface_check
    - sa_len
    - S_ISDIR
    - dump_packet_udp
    - recvmsg
    - send_from
    - socket
    - tftp_err_oops
    - strlen
    - prettyprint_addr
    - setsockopt
    - strstr
    - getsockname
    - free_transfer
    - whine_malloc
    - tftp_err
    - CMSG_FIRSTHDR
    - strncat
    - htons
    - strcmp
    - strcasecmp
    - wildcard_match
    - ioctl
    - option_bool
    - tolower
    - find_mac
    - fix_fd
    - snprintf
    - CMSG_NXTHDR
    - my_syslog
    - defined
    - _
    - enumerate_interfaces
    - get_block
    - sockaddr_isequal
    - free
    - loopback_exception
    - handle_tftp
    - strcpy
    - check_tftp_fileperm
    - memset
    - next
    - lease_find_by_addr
    - indextoname
    - label_exception
    - atoi
    - CMSG_SPACE
    linkageType: ''
    returnType: void
    signature: void tftp_request(struct listener *listen, time_t now)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/dnsmasq/src/tftp.c:540,1
    - Dst: strstr
      Src: /src/dnsmasq/src/tftp.c:545,1
    - Dst: open
      Src: /src/dnsmasq/src/tftp.c:548,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:552,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:552,1
    - Dst: fstat
      Src: /src/dnsmasq/src/tftp.c:562,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:572,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/tftp.c:583,1
    - Dst: close
      Src: /src/dnsmasq/src/tftp.c:585,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/tftp.c:590,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tftp.c:590,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/tftp.c:601,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:605,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:605,1
    - Dst: strerror
      Src: /src/dnsmasq/src/tftp.c:605,1
    - Dst: close
      Src: /src/dnsmasq/src/tftp.c:607,1
    - Dst: tftp_err_oops
      Src: /src/dnsmasq/src/tftp.c:611,1
    - Dst: close
      Src: /src/dnsmasq/src/tftp.c:613,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 56
    argCount: 3
    argNames:
    - len
    - prefix
    - client
    argTypes:
    - ssize_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 615
    functionName: check_tftp_fileperm
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 1
    functionsReached:
    - strstr
    - strcpy
    - tftp_err_oops
    - fstat
    - option_bool
    - whine_malloc
    - close
    - _
    - tftp_err
    - strerror
    - open
    - strcmp
    - strlen
    - geteuid
    linkageType: ''
    returnType: struct tftp_file
    signature: struct tftp_file *check_tftp_fileperm(ssize_t *len, char *prefix, char
      *client)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: poll_check
      Src: /src/dnsmasq/src/tftp.c:623,1
    - Dst: tftp_request
      Src: /src/dnsmasq/src/tftp.c:624,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:627,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/tftp.c:629,1
    - Dst: recvfrom
      Src: /src/dnsmasq/src/tftp.c:638,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/tftp.c:641,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/tftp.c:644,1
    - Dst: handle_tftp
      Src: /src/dnsmasq/src/tftp.c:645,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/tftp.c:649,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:650,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:650,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/tftp.c:651,1
    - Dst: sendto
      Src: /src/dnsmasq/src/tftp.c:651,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/tftp.c:651,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/tftp.c:654,1
    - Dst: difftime
      Src: /src/dnsmasq/src/tftp.c:669,1
    - Dst: get_block
      Src: /src/dnsmasq/src/tftp.c:674,1
    - Dst: difftime
      Src: /src/dnsmasq/src/tftp.c:677,1
    - Dst: get_block
      Src: /src/dnsmasq/src/tftp.c:688,1
    - Dst: get_block
      Src: /src/dnsmasq/src/tftp.c:698,1
    - Dst: tftp_err_oops
      Src: /src/dnsmasq/src/tftp.c:705,1
    - Dst: send_from
      Src: /src/dnsmasq/src/tftp.c:709,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:709,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/tftp.c:712,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/tftp.c:720,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/tftp.c:721,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/tftp.c:722,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:724,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:724,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:726,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:726,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:728,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:728,1
    - Dst: free_transfer
      Src: /src/dnsmasq/src/tftp.c:733,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 67
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 617
    functionDepth: 3
    functionLinenumber: 617
    functionLinenumberEnd: 744
    functionName: check_tftp_listeners
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 0
    functionsReached:
    - tftp_request
    - sa_len
    - retry_send
    - dump_packet_udp
    - send_from
    - tftp_err_oops
    - sanitise
    - prettyprint_addr
    - free_transfer
    - tftp_err
    - recvfrom
    - poll_check
    - option_bool
    - my_syslog
    - _
    - get_block
    - sockaddr_isequal
    - handle_tftp
    - strcpy
    - difftime
    - sendto
    linkageType: ''
    returnType: void
    signature: void check_tftp_listeners(time_t now)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:755,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:758,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:780,1
    - Dst: next
      Src: /src/dnsmasq/src/tftp.c:784,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/tftp.c:786,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/tftp.c:792,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:794,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:794,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/tftp.c:795,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - now
    - transfer
    - len
    argTypes:
    - time_t
    - struct tftp_transfer*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 802
    functionName: handle_tftp
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 2
    functionsReached:
    - next
    - ntohs
    - my_syslog
    - _
    - sanitise
    - prettyprint_addr
    linkageType: ''
    returnType: void
    signature: void handle_tftp(time_t now, struct tftp_transfer *transfer, ssize_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:806,1
    - Dst: close
      Src: /src/dnsmasq/src/tftp.c:807,1
    - Dst: close
      Src: /src/dnsmasq/src/tftp.c:811,1
    - Dst: free
      Src: /src/dnsmasq/src/tftp.c:812,1
    - Dst: free
      Src: /src/dnsmasq/src/tftp.c:815,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - transfer
    argTypes:
    - struct tftp_transfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 816
    functionName: free_transfer
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 2
    functionsReached:
    - option_bool
    - free
    - close
    linkageType: ''
    returnType: void
    signature: void free_transfer(struct tftp_transfer *transfer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - p
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 831
    functionName: next
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *next(char **p, char *end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/dnsmasq/src/tftp.c:840,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 849
    functionName: sanitise
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 2
    functionsReached:
    - isprint
    linkageType: ''
    returnType: void
    signature: void sanitise(char *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/tftp.c:863,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/tftp.c:865,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:867,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:868,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/tftp.c:869,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/tftp.c:872,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tftp.c:873,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - err
    - packet
    - message
    - file
    - arg2
    argTypes:
    - int
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 852
    functionDepth: 1
    functionLinenumber: 852
    functionLinenumberEnd: 876
    functionName: tftp_err
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 3
    functionsReached:
    - memset
    - option_bool
    - snprintf
    - my_syslog
    - htons
    - sanitise
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t tftp_err(int err, char *packet, char *message, char *file,
      char *arg2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcpy
      Src: /src/dnsmasq/src/tftp.c:882,1
    - Dst: tftp_err
      Src: /src/dnsmasq/src/tftp.c:883,1
    - Dst: _
      Src: /src/dnsmasq/src/tftp.c:883,1
    - Dst: strerror
      Src: /src/dnsmasq/src/tftp.c:883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - packet
    - file
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 878
    functionDepth: 2
    functionLinenumber: 878
    functionLinenumberEnd: 884
    functionName: tftp_err_oops
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 3
    functionsReached:
    - strcpy
    - strerror
    - _
    - tftp_err
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t tftp_err_oops(char *packet, const char *file)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/tftp.c:889,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:904,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:907,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:908,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:912,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:913,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:917,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:918,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:922,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/tftp.c:923,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:947,1
    - Dst: htons
      Src: /src/dnsmasq/src/tftp.c:948,1
    - Dst: lseek
      Src: /src/dnsmasq/src/tftp.c:951,1
    - Dst: read_write
      Src: /src/dnsmasq/src/tftp.c:952,1
    - Dst: memmove
      Src: /src/dnsmasq/src/tftp.c:974,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 51
    argCount: 2
    argNames:
    - packet
    - transfer
    argTypes:
    - char*
    - struct tftp_transfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 887
    functionDepth: 1
    functionLinenumber: 887
    functionLinenumberEnd: 985
    functionName: get_block
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 2
    functionsReached:
    - memset
    - memmove
    - sprintf
    - htons
    - read_write
    - lseek
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t get_block(char *packet, struct tftp_transfer *transfer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: queue_tftp
      Src: /src/dnsmasq/src/tftp.c:996,1
    - Dst: free_transfer
      Src: /src/dnsmasq/src/tftp.c:998,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 1003
    functionName: do_tftp_script_run
    functionSourceFile: /src/dnsmasq/src/tftp.c
    functionUses: 0
    functionsReached:
    - queue_tftp
    - free_transfer
    linkageType: ''
    returnType: int
    signature: int do_tftp_script_run(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - sa
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: SA_SIZE
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SA_SIZE(sa)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/dnsmasq/src/bpf.c:74,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/bpf.c:79,1
    - Dst: sysctl
      Src: /src/dnsmasq/src/bpf.c:81,1
    - Dst: SA_SIZE
      Src: /src/dnsmasq/src/bpf.c:93,1
    - Dst: callback_t::af_unspec
      Src: /src/dnsmasq/src/bpf.c:94,1
    - Dst: LLADDR
      Src: /src/dnsmasq/src/bpf.c:94,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - parm
    - callback
    argTypes:
    - void*
    - callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 99
    functionName: arp_enumerate
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached:
    - expand_buf
    - sysctl
    - callback_t::af_unspec
    - LLADDR
    - SA_SIZE
    linkageType: ''
    returnType: int
    signature: int arp_enumerate(void *parm, callback_t callback)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: arp_enumerate
      Src: /src/dnsmasq/src/bpf.c:110,1
    - Dst: getifaddrs
      Src: /src/dnsmasq/src/bpf.c:119,1
    - Dst: socket
      Src: /src/dnsmasq/src/bpf.c:124,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/bpf.c:129,1
    - Dst: callback_t::af_inet
      Src: /src/dnsmasq/src/bpf.c:149,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/bpf.c:161,1
    - Dst: memset
      Src: /src/dnsmasq/src/bpf.c:167,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/bpf.c:168,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/bpf.c:171,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/bpf.c:191,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/bpf.c:208,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/bpf.c:208,1
    - Dst: callback_t::af_inet6
      Src: /src/dnsmasq/src/bpf.c:214,1
    - Dst: callback_t::af_local
      Src: /src/dnsmasq/src/bpf.c:225,1
    - Dst: LLADDR
      Src: /src/dnsmasq/src/bpf.c:225,1
    - Dst: freeifaddrs
      Src: /src/dnsmasq/src/bpf.c:235,1
    - Dst: close
      Src: /src/dnsmasq/src/bpf.c:237,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 76
    argCount: 3
    argNames:
    - family
    - parm
    - callback
    argTypes:
    - int
    - void*
    - callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 241
    functionName: iface_enumerate
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 5
    functionsReached:
    - if_nametoindex
    - callback_t::af_inet
    - memset
    - ioctl
    - option_bool
    - arp_enumerate
    - freeifaddrs
    - safe_strncpy
    - close
    - IN6_ARE_ADDR_EQUAL
    - getifaddrs
    - LLADDR
    - socket
    - IN6_IS_ADDR_LINKLOCAL
    - callback_t::af_inet6
    - callback_t::af_local
    linkageType: ''
    returnType: int
    signature: int iface_enumerate(int family, void *parm, callback_t callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/dnsmasq/src/bpf.c:254,1
    - Dst: open
      Src: /src/dnsmasq/src/bpf.c:255,1
    - Dst: die
      Src: /src/dnsmasq/src/bpf.c:259,1
    - Dst: _
      Src: /src/dnsmasq/src/bpf.c:259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 261
    functionName: init_bpf
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached:
    - open
    - sprintf
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void init_bpf(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/bpf.c:287,1
    - Dst: _
      Src: /src/dnsmasq/src/bpf.c:287,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/bpf.c:293,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/bpf.c:296,1
    - Dst: LLADDR
      Src: /src/dnsmasq/src/bpf.c:296,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:297,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/bpf.c:299,1
    - Dst: memset
      Src: /src/dnsmasq/src/bpf.c:301,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/bpf.c:306,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:312,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:318,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:319,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:328,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:329,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:333,1
    - Dst: htons
      Src: /src/dnsmasq/src/bpf.c:334,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/bpf.c:347,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/bpf.c:358,1
    - Dst: writev
      Src: /src/dnsmasq/src/bpf.c:358,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 61
    argCount: 4
    argNames:
    - mess
    - len
    - iface_addr
    - ifr
    argTypes:
    - struct dhcp_packet*
    - size_t
    - struct in_addr
    - struct ifreq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 359
    functionName: send_via_bpf
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached:
    - writev
    - memset
    - ioctl
    - ntohs
    - my_syslog
    - _
    - retry_send
    - htons
    - LLADDR
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void send_via_bpf(struct dhcp_packet *mess, size_t len,\n\t\t  struct
      in_addr iface_addr, struct ifreq *ifr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/bpf.c:369,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/bpf.c:371,1
    - Dst: die
      Src: /src/dnsmasq/src/bpf.c:372,1
    - Dst: _
      Src: /src/dnsmasq/src/bpf.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 373
    functionName: route_init
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached:
    - socket
    - fix_fd
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void route_init(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/dnsmasq/src/bpf.c:378,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/bpf.c:393,1
    - Dst: _
      Src: /src/dnsmasq/src/bpf.c:393,1
    - Dst: queue_event
      Src: /src/dnsmasq/src/bpf.c:400,1
    - Dst: queue_event
      Src: /src/dnsmasq/src/bpf.c:436,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 438
    functionName: route_sock
    functionSourceFile: /src/dnsmasq/src/bpf.c
    functionUses: 0
    functionsReached:
    - recv
    - my_syslog
    - queue_event
    - _
    linkageType: ''
    returnType: void
    signature: void route_sock(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nfct_new
      Src: /src/dnsmasq/src/conntrack.c:34,1
    - Dst: nfct_set_attr_u8
      Src: /src/dnsmasq/src/conntrack.c:36,1
    - Dst: nfct_set_attr_u16
      Src: /src/dnsmasq/src/conntrack.c:37,1
    - Dst: htons
      Src: /src/dnsmasq/src/conntrack.c:37,1
    - Dst: nfct_set_attr_u8
      Src: /src/dnsmasq/src/conntrack.c:41,1
    - Dst: nfct_set_attr
      Src: /src/dnsmasq/src/conntrack.c:42,1
    - Dst: nfct_set_attr_u16
      Src: /src/dnsmasq/src/conntrack.c:43,1
    - Dst: nfct_set_attr
      Src: /src/dnsmasq/src/conntrack.c:44,1
    - Dst: nfct_set_attr_u8
      Src: /src/dnsmasq/src/conntrack.c:48,1
    - Dst: nfct_set_attr_u32
      Src: /src/dnsmasq/src/conntrack.c:49,1
    - Dst: nfct_set_attr_u16
      Src: /src/dnsmasq/src/conntrack.c:50,1
    - Dst: nfct_set_attr_u32
      Src: /src/dnsmasq/src/conntrack.c:51,1
    - Dst: nfct_open
      Src: /src/dnsmasq/src/conntrack.c:55,1
    - Dst: nfct_callback_register
      Src: /src/dnsmasq/src/conntrack.c:57,1
    - Dst: nfct_query
      Src: /src/dnsmasq/src/conntrack.c:58,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/conntrack.c:63,1
    - Dst: _
      Src: /src/dnsmasq/src/conntrack.c:63,1
    - Dst: strerror
      Src: /src/dnsmasq/src/conntrack.c:63,1
    - Dst: nfct_close
      Src: /src/dnsmasq/src/conntrack.c:67,1
    - Dst: nfct_destroy
      Src: /src/dnsmasq/src/conntrack.c:69,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - peer_addr
    - local_addr
    - istcp
    - markp
    argTypes:
    - union mysockaddr*
    - union all_addr*
    - int
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 73
    functionName: get_incoming_mark
    functionSourceFile: /src/dnsmasq/src/conntrack.c
    functionUses: 5
    functionsReached:
    - nfct_set_attr_u8
    - nfct_query
    - nfct_close
    - nfct_new
    - nfct_callback_register
    - my_syslog
    - nfct_set_attr
    - _
    - strerror
    - htons
    - nfct_set_attr_u16
    - nfct_set_attr_u32
    - nfct_open
    - nfct_destroy
    linkageType: ''
    returnType: int
    signature: int get_incoming_mark(union mysockaddr *peer_addr, union all_addr *local_addr,
      int istcp, unsigned int *markp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nfct_get_attr_u32
      Src: /src/dnsmasq/src/conntrack.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - type
    - ct
    - data
    argTypes:
    - enum nf_conntrack_msg_type
    - struct nf_conntrack*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 83
    functionName: callback
    functionSourceFile: /src/dnsmasq/src/conntrack.c
    functionUses: 0
    functionsReached:
    - nfct_get_attr_u32
    linkageType: ''
    returnType: int
    signature: int callback(enum nf_conntrack_msg_type type, struct nf_conntrack *ct,
      void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: LOG
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - condition
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: ASSERT
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT(condition)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:53,1
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:54,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 4
    argNames:
    - value
    - num_value_bytes
    - pattern
    - num_pattern_bytes
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 105
    functionName: is_string_matching_glob_pattern
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 0
    functionsReached:
    - ASSERT
    linkageType: ''
    returnType: int
    signature: "int is_string_matching_glob_pattern(\n  const char *value,\n  size_t
      num_value_bytes,\n  const char *pattern,\n  size_t num_pattern_bytes)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:128,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:142,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:142,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:151,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:151,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:156,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:156,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:170,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:170,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:176,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:176,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:184,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:184,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:189,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:189,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:199,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:199,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:204,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:204,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 56
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 213
    functionName: is_valid_dns_name
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 1
    functionsReached:
    - ASSERT
    - LOG
    - _
    linkageType: ''
    returnType: int
    signature: int is_valid_dns_name(const char *value)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:241,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:258,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:258,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:267,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:267,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:272,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:272,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:285,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:285,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:295,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:295,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:301,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:301,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:309,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:309,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:314,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:314,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:319,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:319,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:329,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:329,1
    - Dst: LOG
      Src: /src/dnsmasq/src/pattern.c:334,1
    - Dst: _
      Src: /src/dnsmasq/src/pattern.c:334,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 69
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 345
    functionName: is_valid_dns_name_pattern
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 0
    functionsReached:
    - ASSERT
    - LOG
    - _
    linkageType: ''
    returnType: int
    signature: int is_valid_dns_name_pattern(const char *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:358,1
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:359,1
    - Dst: is_valid_dns_name
      Src: /src/dnsmasq/src/pattern.c:359,1
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:360,1
    - Dst: ASSERT
      Src: /src/dnsmasq/src/pattern.c:361,1
    - Dst: is_valid_dns_name_pattern
      Src: /src/dnsmasq/src/pattern.c:361,1
    - Dst: is_string_matching_glob_pattern
      Src: /src/dnsmasq/src/pattern.c:373,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - name
    - pattern
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 384
    functionName: is_dns_name_matching_pattern
    functionSourceFile: /src/dnsmasq/src/pattern.c
    functionUses: 1
    functionsReached:
    - is_valid_dns_name_pattern
    - ASSERT
    - is_valid_dns_name
    - is_string_matching_glob_pattern
    linkageType: ''
    returnType: int
    signature: int is_dns_name_matching_pattern(const char *name, const char *pattern)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/arp.c:60,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/arp.c:69,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/arp.c:71,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/arp.c:88,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/arp.c:96,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/arp.c:100,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 42
    argCount: 5
    argNames:
    - family
    - addrp
    - mac
    - maclen
    - parmv
    argTypes:
    - int
    - void*
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 104
    functionName: filter_mac
    functionSourceFile: /src/dnsmasq/src/arp.c
    functionUses: 0
    functionsReached:
    - memcmp
    - memcpy
    - whine_malloc
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: int
    signature: int filter_mac(int family, void *addrp, char *mac, size_t maclen, void
      *parmv)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/arp.c:115,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/arp.c:131,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/arp.c:138,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/arp.c:155,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/arp.c:183,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/arp.c:196,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 55
    argCount: 4
    argNames:
    - addr
    - mac
    - lazy
    - now
    argTypes:
    - union mysockaddr*
    - unsigned char*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 200
    functionName: find_mac
    functionSourceFile: /src/dnsmasq/src/arp.c
    functionUses: 4
    functionsReached:
    - difftime
    - whine_malloc
    - iface_enumerate
    - IN6_ARE_ADDR_EQUAL
    - memcpy
    linkageType: ''
    returnType: int
    signature: int find_mac(union mysockaddr *addr, unsigned char *mac, int lazy,
      time_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/arp.c:210,1
    - Dst: queue_arp
      Src: /src/dnsmasq/src/arp.c:211,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/arp.c:224,1
    - Dst: queue_arp
      Src: /src/dnsmasq/src/arp.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 232
    functionName: do_arp_script_run
    functionSourceFile: /src/dnsmasq/src/arp.c
    functionUses: 0
    functionsReached:
    - option_bool
    - queue_arp
    linkageType: ''
    returnType: int
    signature: int do_arp_script_run(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: fscanf
      Src: /src/dnsmasq/src/lease.c:42,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:48,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/lease.c:50,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/lease.c:53,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:54,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:60,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:60,1
    - Dst: fscanf
      Src: /src/dnsmasq/src/lease.c:62,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/lease.c:64,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/lease.c:65,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/lease.c:67,1
    - Dst: lease6_find_by_plain_addr
      Src: /src/dnsmasq/src/lease.c:68,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/lease.c:75,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:77,1
    - Dst: lease_set_vendorclass
      Src: /src/dnsmasq/src/lease.c:78,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:79,1
    - Dst: lease_set_agent_id
      Src: /src/dnsmasq/src/lease.c:80,1
    - Dst: fscanf
      Src: /src/dnsmasq/src/lease.c:87,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/lease.c:90,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:90,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/lease.c:96,1
    - Dst: lease4_allocate
      Src: /src/dnsmasq/src/lease.c:98,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/lease.c:101,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/lease.c:107,1
    - Dst: lease6_allocate
      Src: /src/dnsmasq/src/lease.c:118,1
    - Dst: lease_set_iaid
      Src: /src/dnsmasq/src/lease.c:119,1
    - Dst: strtoul
      Src: /src/dnsmasq/src/lease.c:119,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/lease.c:124,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:124,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:131,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:131,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:133,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/lease.c:134,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/lease.c:136,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/lease.c:139,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/lease.c:140,1
    - Dst: atol
      Src: /src/dnsmasq/src/lease.c:142,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 2
    argNames:
    - now
    - leasestream
    argTypes:
    - time_t
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 161
    functionName: read_leases
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - fscanf
    - die
    - atol
    - inet_pton
    - safe_malloc
    - lease_set_hostname
    - parse_hex
    - strcmp
    - memcpy
    - lease6_allocate
    - lease4_allocate
    - my_syslog
    - _
    - lease6_find_by_plain_addr
    - lease_set_hwaddr
    - lease_find_by_addr
    - lease_set_agent_id
    - lease_set_vendorclass
    - strtoul
    - lease_set_iaid
    linkageType: ''
    returnType: int
    signature: int read_leases(time_t now, FILE *leasestream)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:172,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:182,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:183,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:183,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/lease.c:185,1
    - Dst: strcat
      Src: /src/dnsmasq/src/lease.c:186,1
    - Dst: popen
      Src: /src/dnsmasq/src/lease.c:187,1
    - Dst: fopen
      Src: /src/dnsmasq/src/lease.c:200,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:203,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:203,1
    - Dst: rewind
      Src: /src/dnsmasq/src/lease.c:206,1
    - Dst: read_leases
      Src: /src/dnsmasq/src/lease.c:211,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/lease.c:212,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:212,1
    - Dst: ferror
      Src: /src/dnsmasq/src/lease.c:214,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:215,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:215,1
    - Dst: pclose
      Src: /src/dnsmasq/src/lease.c:224,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:224,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:224,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:226,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:228,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:231,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:231,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:234,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/lease.c:236,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:236,1
    - Dst: die
      Src: /src/dnsmasq/src/lease.c:237,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:237,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/lease.c:237,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/lease.c:244,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 41
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 246
    functionName: lease_init
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strcat
    - lease_prune
    - option_bool
    - popen
    - die
    - read_leases
    - my_syslog
    - ferror
    - _
    - pclose
    - sprintf
    - WEXITSTATUS
    - fopen
    - rewind
    - strlen
    linkageType: ''
    returnType: void
    signature: void lease_init(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_config
      Src: /src/dnsmasq/src/lease.c:259,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/lease.c:263,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/lease.c:263,1
    - Dst: host_from_dns
      Src: /src/dnsmasq/src/lease.c:264,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/lease.c:265,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/lease.c:265,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 266
    functionName: lease_update_from_configs
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - get_domain
    - host_from_dns
    - lease_set_hostname
    - find_config
    linkageType: ''
    returnType: void
    signature: void lease_update_from_configs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dnsmasq/src/lease.c:272,1
    - Dst: vfprintf
      Src: /src/dnsmasq/src/lease.c:273,1
    - Dst: va_end
      Src: /src/dnsmasq/src/lease.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - errp
    - format
    argTypes:
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 276
    functionName: ourprintf
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - vfprintf
    linkageType: ''
    returnType: void
    signature: void ourprintf(int *errp, char *format, ...)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: rewind
      Src: /src/dnsmasq/src/lease.c:287,1
    - Dst: ftruncate
      Src: /src/dnsmasq/src/lease.c:288,1
    - Dst: fileno
      Src: /src/dnsmasq/src/lease.c:288,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:302,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:304,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:308,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:311,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:313,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/lease.c:316,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:318,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:319,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:324,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:325,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:328,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:334,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:336,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:337,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:346,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:348,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/lease.c:351,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:353,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:355,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:360,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:361,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:364,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/lease.c:376,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/lease.c:379,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:383,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:385,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:386,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:391,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:393,1
    - Dst: ourprintf
      Src: /src/dnsmasq/src/lease.c:394,1
    - Dst: fflush
      Src: /src/dnsmasq/src/lease.c:399,1
    - Dst: fsync
      Src: /src/dnsmasq/src/lease.c:400,1
    - Dst: fileno
      Src: /src/dnsmasq/src/lease.c:400,1
    - Dst: periodic_slaac
      Src: /src/dnsmasq/src/lease.c:416,1
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:418,1
    - Dst: periodic_ra
      Src: /src/dnsmasq/src/lease.c:422,1
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:424,1
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:432,1
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:437,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/lease.c:440,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:440,1
    - Dst: strerror
      Src: /src/dnsmasq/src/lease.c:441,1
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:442,1
    - Dst: send_alarm
      Src: /src/dnsmasq/src/lease.c:445,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 95
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 278
    functionDepth: 4
    functionLinenumber: 278
    functionLinenumberEnd: 446
    functionName: lease_update_file
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 2
    functionsReached:
    - fflush
    - difftime
    - ftruncate
    - periodic_ra
    - my_syslog
    - ourprintf
    - _
    - periodic_slaac
    - strerror
    - fsync
    - send_alarm
    - rewind
    - fileno
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void lease_update_file(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netmask_length
      Src: /src/dnsmasq/src/lease.c:453,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/lease.c:461,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - local
    - if_index
    - label
    - netmask
    - broadcast
    - vparam
    argTypes:
    - struct in_addr
    - int
    - char*
    - struct in_addr
    - struct in_addr
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 469
    functionName: find_interface_v4
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - is_same_net
    - netmask_length
    linkageType: ''
    returnType: int
    signature: "int find_interface_v4(struct in_addr local, int if_index, char *label,\n\t\t\t
      \    struct in_addr netmask, struct in_addr broadcast, void *vparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/lease.c:486,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 495
    functionName: find_interface_v6
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    linkageType: ''
    returnType: int
    signature: "int find_interface_v6(struct in6_addr *local,  int prefix,\n\t\t\t
      \    int scope, int if_index, int flags, \n\t\t\t     unsigned int preferred,
      unsigned int valid, void *vparam)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slaac_ping_reply
      Src: /src/dnsmasq/src/lease.c:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - sender
    - packet
    - interface
    argTypes:
    - struct in6_addr*
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 503
    functionName: lease_ping_reply
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - slaac_ping_reply
    linkageType: ''
    returnType: void
    signature: void lease_ping_reply(struct in6_addr *sender, unsigned char *packet,
      char *interface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slaac_add_addrs
      Src: /src/dnsmasq/src/lease.c:514,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 515
    functionName: lease_update_slaac
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - slaac_add_addrs
    linkageType: ''
    returnType: void
    signature: void lease_update_slaac(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/lease.c:531,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/lease.c:533,1
    - Dst: lease_set_interface
      Src: /src/dnsmasq/src/lease.c:538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 539
    functionName: lease_find_interfaces
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - lease_set_interface
    - iface_enumerate
    linkageType: ''
    returnType: void
    signature: void lease_find_interfaces(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_duid
      Src: /src/dnsmasq/src/lease.c:548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 550
    functionName: lease_make_duid
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - make_duid
    linkageType: ''
    returnType: void
    signature: void lease_make_duid(time_t now)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: cache_unhash_dhcp
      Src: /src/dnsmasq/src/lease.c:567,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:584,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:585,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:586,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:591,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:595,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:596,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:602,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:604,1
    - Dst: cache_add_dhcp_entry
      Src: /src/dnsmasq/src/lease.c:605,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 27
    argCount: 1
    argNames:
    - force
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 611
    functionName: lease_update_dns
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - option_bool
    - cache_add_dhcp_entry
    - cache_unhash_dhcp
    linkageType: ''
    returnType: void
    signature: void lease_update_dns(int force)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - target
    - now
    argTypes:
    - struct dhcp_lease*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 640
    functionName: lease_prune
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 2
    functionsReached:
    - difftime
    linkageType: ''
    returnType: void
    signature: void lease_prune(struct dhcp_lease *target, time_t now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:656,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:670,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 15
    argCount: 5
    argNames:
    - hwaddr
    - hw_len
    - hw_type
    - clid
    - clid_len
    argTypes:
    - unsigned char*
    - int
    - int
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 675
    functionName: lease_find_by_client
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct dhcp_lease
    signature: "struct dhcp_lease *lease_find_by_client(unsigned char *hwaddr, int
      hw_len, int hw_type,\n\t\t\t\t\tunsigned char *clid, int clid_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 692
    functionName: lease_find_by_addr
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease_find_by_addr(struct in_addr addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/lease.c:707,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:711,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 5
    argNames:
    - clid
    - clid_len
    - lease_type
    - iaid
    - addr
    argTypes:
    - unsigned char*
    - int
    - int
    - unsigned int
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 718
    functionName: lease6_find
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - memcmp
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: struct dhcp_lease
    signature: "struct dhcp_lease *lease6_find(unsigned char *clid, int clid_len,
      \n\t\t\t       int lease_type, unsigned int iaid,\n\t\t\t       struct in6_addr
      *addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 727
    functionName: lease6_reset
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lease6_reset(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:750,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 5
    argNames:
    - first
    - lease_type
    - clid
    - clid_len
    - iaid
    argTypes:
    - struct dhcp_lease*
    - int
    - unsigned char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 757
    functionName: lease6_find_by_client
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct dhcp_lease
    signature: "struct dhcp_lease *lease6_find_by_client(struct dhcp_lease *first,
      int lease_type,\n\t\t\t\t\t unsigned char *clid, int clid_len,\n\t\t\t\t\t unsigned
      int iaid)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/lease.c:768,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:769,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 3
    argNames:
    - net
    - prefix
    - addr
    argTypes:
    - struct in6_addr*
    - int
    - u64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 759
    functionDepth: 1
    functionLinenumber: 759
    functionLinenumberEnd: 774
    functionName: lease6_find_by_addr
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    - addr6part
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease6_find_by_addr(struct in6_addr *net, int prefix,
      u64 addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/lease.c:785,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 790
    functionName: lease6_find_by_plain_addr
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease6_find_by_plain_addr(struct in6_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:796,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/lease.c:804,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:805,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:805,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:806,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:806,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:807,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/lease.c:808,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 9
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 793
    functionDepth: 1
    functionLinenumber: 793
    functionLinenumberEnd: 812
    functionName: lease_find_max_addr6
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    - addr6part
    linkageType: ''
    returnType: u64
    signature: u64 lease_find_max_addr6(struct dhcp_context *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:829,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:829,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:830,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:830,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:831,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/lease.c:831,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 836
    functionName: lease_find_max_addr
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr lease_find_max_addr(struct dhcp_context *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:841,1
    - Dst: memset
      Src: /src/dnsmasq/src/lease.c:844,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 858
    functionName: lease_allocate
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - memset
    - whine_malloc
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease_allocate(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lease_allocate
      Src: /src/dnsmasq/src/lease.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 860
    functionDepth: 2
    functionLinenumber: 860
    functionLinenumberEnd: 870
    functionName: lease4_allocate
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - lease_allocate
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease4_allocate(struct in_addr addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lease_allocate
      Src: /src/dnsmasq/src/lease.c:875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - addrp
    - lease_type
    argTypes:
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 873
    functionDepth: 2
    functionLinenumber: 873
    functionLinenumberEnd: 887
    functionName: lease6_allocate
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - lease_allocate
    linkageType: ''
    returnType: struct dhcp_lease
    signature: struct dhcp_lease *lease6_allocate(struct in6_addr *addrp, int lease_type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/lease.c:905,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - lease
    - len
    - now
    argTypes:
    - struct dhcp_lease*
    - unsigned int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 927
    functionName: lease_set_expires
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - difftime
    linkageType: ''
    returnType: void
    signature: void lease_set_expires(struct dhcp_lease *lease, unsigned int len,
      time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - lease
    - iaid
    argTypes:
    - struct dhcp_lease*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 937
    functionName: lease_set_iaid
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lease_set_iaid(struct dhcp_lease *lease, unsigned int iaid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:954,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:957,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:976,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:977,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:983,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:993,1
    - Dst: slaac_add_addrs
      Src: /src/dnsmasq/src/lease.c:998,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 8
    argNames:
    - lease
    - hwaddr
    - clid
    - hw_len
    - hw_type
    - clid_len
    - now
    - force
    argTypes:
    - struct dhcp_lease*
    - unsigned char*
    - unsigned char*
    - int
    - int
    - int
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 1000
    functionName: lease_set_hwaddr
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - slaac_add_addrs
    - whine_malloc
    - memcmp
    - free
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void lease_set_hwaddr(struct dhcp_lease *lease, const unsigned char
      *hwaddr,\n\t\t      const unsigned char *clid, int hw_len, int hw_type,\n\t\t
      \     int clid_len, time_t now, int force)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1008,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - lease
    argTypes:
    - struct dhcp_lease*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1022
    functionName: kill_name
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void kill_name(struct dhcp_lease *lease)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_domain6
      Src: /src/dnsmasq/src/lease.c:1036,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/lease.c:1039,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/lease.c:1044,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:1044,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:1044,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/lease.c:1046,1
    - Dst: strcat
      Src: /src/dnsmasq/src/lease.c:1047,1
    - Dst: strcat
      Src: /src/dnsmasq/src/lease.c:1048,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1052
    functionName: lease_calc_fqdns
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - get_domain6
    - strcpy
    - strlen
    - strcat
    - safe_malloc
    - get_domain
    linkageType: ''
    returnType: void
    signature: void lease_calc_fqdns(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/lease.c:1059,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/lease.c:1060,1
    - Dst: _
      Src: /src/dnsmasq/src/lease.c:1060,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/lease.c:1062,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:1082,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:1082,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/lease.c:1084,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:1085,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:1085,1
    - Dst: strlen
      Src: /src/dnsmasq/src/lease.c:1085,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/lease.c:1087,1
    - Dst: strcat
      Src: /src/dnsmasq/src/lease.c:1088,1
    - Dst: strcat
      Src: /src/dnsmasq/src/lease.c:1089,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:1096,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/lease.c:1098,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/lease.c:1103,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:1115,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1123,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1124,1
    - Dst: kill_name
      Src: /src/dnsmasq/src/lease.c:1128,1
    - Dst: kill_name
      Src: /src/dnsmasq/src/lease.c:1135,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 54
    argCount: 5
    argNames:
    - lease
    - name
    - auth
    - domain
    - config_domain
    argTypes:
    - struct dhcp_lease*
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1054
    functionDepth: 1
    functionLinenumber: 1054
    functionLinenumberEnd: 1146
    functionName: lease_set_hostname
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 2
    functionsReached:
    - strcpy
    - strcat
    - option_bool
    - kill_name
    - whine_malloc
    - hostname_isequal
    - my_syslog
    - _
    - memcmp
    - free
    - strlen
    linkageType: ''
    returnType: void
    signature: void lease_set_hostname(struct dhcp_lease *lease, const char *name,
      int auth, char *domain, char *config_domain)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slaac_add_addrs
      Src: /src/dnsmasq/src/lease.c:1159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - lease
    - interface
    - now
    argTypes:
    - struct dhcp_lease*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1161
    functionName: lease_set_interface
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - slaac_add_addrs
    linkageType: ''
    returnType: void
    signature: void lease_set_interface(struct dhcp_lease *lease, int interface, time_t
      now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lease::lease
      Src: /src/dnsmasq/src/lease.c:1169,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:1169,1
    - Dst: len::len
      Src: /src/dnsmasq/src/lease.c:1169,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1173,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:1176,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:1178,1
    - Dst: len::len
      Src: /src/dnsmasq/src/lease.c:1178,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - lease
    - new
    - len
    argTypes:
    - struct dhcp_lease*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1163
    functionDepth: 1
    functionLinenumber: 1163
    functionLinenumberEnd: 1181
    functionName: lease_set_agent_id
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - lease::lease
    - whine_malloc
    - memcpy
    - memcmp
    - free
    - len::len
    linkageType: ''
    returnType: void
    signature: void lease_set_agent_id(struct dhcp_lease *lease, unsigned char *new,
      int len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lease::lease
      Src: /src/dnsmasq/src/lease.c:1188,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/lease.c:1188,1
    - Dst: len::len
      Src: /src/dnsmasq/src/lease.c:1188,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1192,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/lease.c:1195,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:1197,1
    - Dst: len::len
      Src: /src/dnsmasq/src/lease.c:1197,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 3
    argNames:
    - lease
    - new
    - len
    argTypes:
    - struct dhcp_lease*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1183
    functionDepth: 1
    functionLinenumber: 1183
    functionLinenumberEnd: 1200
    functionName: lease_set_vendorclass
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 1
    functionsReached:
    - lease::lease
    - whine_malloc
    - memcpy
    - memcmp
    - free
    - len::len
    linkageType: ''
    returnType: void
    signature: void lease_set_vendorclass(struct dhcp_lease *lease, unsigned char
      *new, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1209
    functionName: rerun_scripts
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rerun_scripts(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:1225,1
    - Dst: queue_script
      Src: /src/dnsmasq/src/lease.c:1237,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1239,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1250,1
    - Dst: kill_name
      Src: /src/dnsmasq/src/lease.c:1253,1
    - Dst: queue_script
      Src: /src/dnsmasq/src/lease.c:1255,1
    - Dst: emit_dbus_signal
      Src: /src/dnsmasq/src/lease.c:1258,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1262,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1263,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1264,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1265,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1266,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1267,1
    - Dst: queue_script
      Src: /src/dnsmasq/src/lease.c:1278,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1280,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:1287,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/lease.c:1288,1
    - Dst: queue_script
      Src: /src/dnsmasq/src/lease.c:1291,1
    - Dst: emit_dbus_signal
      Src: /src/dnsmasq/src/lease.c:1295,1
    - Dst: free
      Src: /src/dnsmasq/src/lease.c:1301,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1308
      start: 1216
    functionDepth: 1
    functionLinenumber: 1216
    functionLinenumberEnd: 1308
    functionName: do_script_run
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - queue_script
    - option_bool
    - kill_name
    - emit_dbus_signal
    - free
    linkageType: ''
    returnType: int
    signature: int do_script_run(time_t now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: whine_realloc
      Src: /src/dnsmasq/src/lease.c:1330,1
    - Dst: lease::lease
      Src: /src/dnsmasq/src/lease.c:1335,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/lease.c:1340,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - lease
    - data
    - len
    - delim
    argTypes:
    - struct dhcp_lease*
    - unsigned char*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1312
    functionDepth: 1
    functionLinenumber: 1312
    functionLinenumberEnd: 1343
    functionName: lease_add_extradata
    functionSourceFile: /src/dnsmasq/src/lease.c
    functionUses: 0
    functionsReached:
    - lease::lease
    - memcpy
    - whine_realloc
    linkageType: ''
    returnType: void
    signature: void lease_add_extradata(struct dhcp_lease *lease, unsigned char *data,
      unsigned int len, int delim)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/domain.c:69,1
    - Dst: atoi
      Src: /src/dnsmasq/src/domain.c:73,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:76,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:76,1
    - Dst: htonl
      Src: /src/dnsmasq/src/domain.c:78,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:78,1
    - Dst: atoll
      Src: /src/dnsmasq/src/domain.c:84,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:87,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:87,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:89,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/domain.c:91,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/domain.c:128,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/domain.c:128,1
    - Dst: match_domain
      Src: /src/dnsmasq/src/domain.c:129,1
    - Dst: match_domain6
      Src: /src/dnsmasq/src/domain.c:129,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 65
    argCount: 3
    argNames:
    - flags
    - name
    - addrp
    argTypes:
    - int
    - char*
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 150
    functionName: is_name_synthetic
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - atoll
    - setaddr6part
    - inet_pton
    - addr6part
    - hostname_isequal
    - match_domain
    - atoi
    - match_domain6
    - ntohl
    - htonl
    linkageType: ''
    returnType: int
    signature: int is_name_synthetic(int flags, char *name, union all_addr *addrp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: search_domain
      Src: /src/dnsmasq/src/domain.c:157,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:164,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:164,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/domain.c:165,1
    - Dst: strncpy
      Src: /src/dnsmasq/src/domain.c:170,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/domain.c:172,1
    - Dst: strlen
      Src: /src/dnsmasq/src/domain.c:172,1
    - Dst: strncat
      Src: /src/dnsmasq/src/domain.c:178,1
    - Dst: strncat
      Src: /src/dnsmasq/src/domain.c:179,1
    - Dst: search_domain6
      Src: /src/dnsmasq/src/domain.c:184,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:190,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:190,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/domain.c:191,1
    - Dst: strncpy
      Src: /src/dnsmasq/src/domain.c:199,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/domain.c:203,1
    - Dst: strncat
      Src: /src/dnsmasq/src/domain.c:204,1
    - Dst: strncat
      Src: /src/dnsmasq/src/domain.c:208,1
    - Dst: strncat
      Src: /src/dnsmasq/src/domain.c:209,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - flag
    - addr
    - name
    argTypes:
    - int
    - union all_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 215
    functionName: is_rev_synth
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 0
    functionsReached:
    - search_domain
    - addr6part
    - snprintf
    - sprintf
    - strncat
    - strncpy
    - ntohl
    - strlen
    - search_domain6
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: int is_rev_synth(int flag, union all_addr *addr, char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net_prefix
      Src: /src/dnsmasq/src/domain.c:225,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:229,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:229,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:230,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/domain.c:230,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - addr
    - c
    argTypes:
    - struct in_addr
    - struct cond_domain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 234
    functionName: match_domain
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - ntohl
    - is_same_net_prefix
    linkageType: ''
    returnType: int
    signature: int match_domain(struct in_addr addr, struct cond_domain *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match_domain
      Src: /src/dnsmasq/src/domain.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - addr
    - c
    argTypes:
    - struct in_addr
    - struct cond_domain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 243
    functionName: search_domain
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - match_domain
    linkageType: ''
    returnType: struct cond_domain
    signature: struct cond_domain *search_domain(struct in_addr addr, struct cond_domain
      *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: search_domain
      Src: /src/dnsmasq/src/domain.c:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 253
    functionName: get_domain
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 2
    functionsReached:
    - search_domain
    linkageType: ''
    returnType: char
    signature: char *get_domain(struct in_addr addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/domain.c:264,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:271,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/domain.c:272,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:273,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/domain.c:274,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/domain.c:277,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 2
    argNames:
    - addr
    - c
    argTypes:
    - struct in6_addr*
    - struct cond_domain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 282
    functionName: match_domain6
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    - addr6part
    linkageType: ''
    returnType: int
    signature: int match_domain6(struct in6_addr *addr, struct cond_domain *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match_domain6
      Src: /src/dnsmasq/src/domain.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - addr
    - c
    argTypes:
    - struct in6_addr*
    - struct cond_domain*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: search_domain6
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - match_domain6
    linkageType: ''
    returnType: struct cond_domain
    signature: struct cond_domain *search_domain6(struct in6_addr *addr, struct cond_domain
      *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: search_domain6
      Src: /src/dnsmasq/src/domain.c:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: get_domain6
    functionSourceFile: /src/dnsmasq/src/domain.c
    functionUses: 1
    functionsReached:
    - search_domain6
    linkageType: ''
    returnType: char
    signature: char *get_domain6(struct in6_addr *addr)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:59,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:66,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:93,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:114,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 95
    argCount: 6
    argNames:
    - header
    - plen
    - pp
    - name
    - func
    - parm
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char**
    - char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 191
    functionName: extract_name
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 20
    functionsReached:
    - CHECK_LEN
    linkageType: ''
    returnType: int
    signature: "int extract_name(struct dns_header *header, size_t plen, unsigned
      char **pp, \n\t\t char *name, int func, unsigned int parm)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:202,1
    - Dst: memset
      Src: /src/dnsmasq/src/rfc1035.c:205,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:225,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:225,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:232,1
    - Dst: isdigit
      Src: /src/dnsmasq/src/rfc1035.c:239,1
    - Dst: atoi
      Src: /src/dnsmasq/src/rfc1035.c:245,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:250,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:251,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:251,1
    - Dst: isxdigit
      Src: /src/dnsmasq/src/rfc1035.c:265,1
    - Dst: strtol
      Src: /src/dnsmasq/src/rfc1035.c:271,1
    - Dst: strtol
      Src: /src/dnsmasq/src/rfc1035.c:273,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:281,1
    - Dst: isxdigit
      Src: /src/dnsmasq/src/rfc1035.c:283,1
    - Dst: strtol
      Src: /src/dnsmasq/src/rfc1035.c:288,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 2
    argNames:
    - namein
    - addrp
    argTypes:
    - char*
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 296
    functionName: in_arpa_name_2_addr
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 2
    functionsReached:
    - isdigit
    - memset
    - isxdigit
    - hostname_isequal
    - strtol
    - atoi
    - strlen
    linkageType: ''
    returnType: int
    signature: int in_arpa_name_2_addr(char *namein, union all_addr *addrp)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:304,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:322,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rfc1035.c:339,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:347,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 4
    argNames:
    - ansp
    - header
    - plen
    - extrabytes
    argTypes:
    - unsigned char*
    - struct dns_header*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 351
    functionName: skip_name
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 6
    functionsReached:
    - ADD_RDLEN
    - CHECK_LEN
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *skip_name(unsigned char *ansp, struct dns_header *header,
      size_t plen, int extrabytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:358,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/rfc1035.c:360,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - header
    - plen
    argTypes:
    - struct dns_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 366
    functionName: skip_questions
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 6
    functionsReached:
    - ntohs
    - skip_name
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *skip_questions(struct dns_header *header, size_t plen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skip_name
      Src: /src/dnsmasq/src/rfc1035.c:374,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:377,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rfc1035.c:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - ansp
    - count
    - header
    - plen
    argTypes:
    - unsigned char*
    - int
    - struct dns_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 383
    functionName: skip_section
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 3
    functionsReached:
    - ADD_RDLEN
    - skip_name
    - GETSHORT
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *skip_section(unsigned char *ansp, int count, struct
      dns_header *header, size_t plen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:387,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/rfc1035.c:393,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:393,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:393,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:393,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:398,1
    - Dst: memmove
      Src: /src/dnsmasq/src/rfc1035.c:401,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:402,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - header
    - plen
    - pheader
    - hlen
    argTypes:
    - struct dns_header*
    - size_t
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 407
    functionName: resize_packet
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 4
    functionsReached:
    - skip_questions
    - memmove
    - ntohs
    - htons
    - skip_section
    linkageType: ''
    returnType: size_t
    signature: size_t resize_packet(struct dns_header *header, size_t plen, unsigned
      char *pheader, size_t hlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc1035.c:412,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 2
    argCount: 2
    argNames:
    - addr
    - ban_localhost
    argTypes:
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 425
    functionName: private_net
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 1
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: int
    signature: int private_net(struct in_addr addr, int ban_localhost)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_V4MAPPED
      Src: /src/dnsmasq/src/rfc1035.c:430,1
    - Dst: private_net
      Src: /src/dnsmasq/src/rfc1035.c:434,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc1035.c:438,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/dnsmasq/src/rfc1035.c:439,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/rfc1035.c:440,1
    - Dst: IN6_IS_ADDR_SITELOCAL
      Src: /src/dnsmasq/src/rfc1035.c:441,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc1035.c:443,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 6
    argCount: 2
    argNames:
    - a
    - ban_localhost
    argTypes:
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 444
    functionName: private_net6
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - IN6_IS_ADDR_SITELOCAL
    - IN6_IS_ADDR_V4MAPPED
    - IN6_IS_ADDR_LOOPBACK
    - private_net
    - IN6_IS_ADDR_LINKLOCAL
    - htonl
    linkageType: ''
    returnType: int
    signature: int private_net6(struct in6_addr *a, int ban_localhost)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:452,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:455,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:455,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:458,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/rfc1035.c:458,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:458,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:461,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:464,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:465,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:467,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:474,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:478,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc1035.c:484,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc1035.c:487,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc1035.c:487,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc1035.c:488,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc1035.c:488,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:497,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:497,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:501,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:502,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rfc1035.c:507,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 38
    argCount: 3
    argNames:
    - header
    - qlen
    - namebuff
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 512
    functionName: do_doctor
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 1
    functionsReached:
    - extract_name
    - ADD_RDLEN
    - log_query
    - skip_questions
    - option_bool
    - ntohs
    - CHECK_LEN
    - memcpy
    - GETSHORT
    - is_same_net
    - ntohl
    - skip_section
    linkageType: ''
    returnType: int
    signature: int do_doctor(struct dns_header *header, size_t qlen, char *namebuff)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:528,1
    - Dst: skip_section
      Src: /src/dnsmasq/src/rfc1035.c:529,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:529,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:532,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:537,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:539,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:542,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:543,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:544,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:545,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:551,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc1035.c:554,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/rfc1035.c:560,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:568,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:571,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/rfc1035.c:577,1
    - Dst: blockdata_expand
      Src: /src/dnsmasq/src/rfc1035.c:578,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:580,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:588,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:591,1
    - Dst: blockdata_expand
      Src: /src/dnsmasq/src/rfc1035.c:600,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:602,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:609,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:609,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:614,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:615,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:619,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:621,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:628,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rfc1035.c:644,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 75
    argCount: 7
    argNames:
    - header
    - qlen
    - name
    - substring
    - ttlp
    - no_cache
    - now
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    - int*
    - unsigned long*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 518
    functionDepth: 3
    functionLinenumber: 518
    functionLinenumberEnd: 649
    functionName: find_soa
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - extract_name
    - ADD_RDLEN
    - cache_insert
    - strlen
    - blockdata_expand
    - skip_questions
    - option_bool
    - ntohs
    - CHECK_LEN
    - to_wire
    - GETSHORT
    - GETLONG
    - memcmp
    - blockdata_alloc
    - blockdata_free
    - skip_section
    linkageType: ''
    returnType: int
    signature: int find_soa(struct dns_header *header, size_t qlen, char *name, int
      *substring, unsigned long *ttlp, int no_cache, time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/dnsmasq/src/rfc1035.c:667,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:674,1
    - Dst: memmove
      Src: /src/dnsmasq/src/rfc1035.c:676,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - name
    - p
    - ardlen
    - flag
    argTypes:
    - char*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 681
    functionName: log_txt
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - memmove
    - log_query
    - isprint
    linkageType: ''
    returnType: int
    signature: int log_txt(char *name, unsigned char *p, const int ardlen, int flag)
  - BBCount: 72
    BranchProfiles: []
    Callsites:
    - Dst: RCODE
      Src: /src/dnsmasq/src/rfc1035.c:708,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/rfc1035.c:710,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:714,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:714,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:717,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:718,1
    - Dst: in_arpa_name_2_addr
      Src: /src/dnsmasq/src/rfc1035.c:727,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:731,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:734,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:737,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:740,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:741,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:743,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:744,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:755,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/rfc1035.c:764,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:766,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:768,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:769,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:773,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:778,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:800,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:800,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:806,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:809,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:813,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:816,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:817,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:819,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:820,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:823,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:837,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/rfc1035.c:847,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:854,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:858,1
    - Dst: next_uid
      Src: /src/dnsmasq/src/rfc1035.c:864,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:875,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:886,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:888,1
    - Dst: rrfilter_desc
      Src: /src/dnsmasq/src/rfc1035.c:896,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:899,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:910,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/rfc1035.c:924,1
    - Dst: blockdata_expand
      Src: /src/dnsmasq/src/rfc1035.c:933,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:935,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:945,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:947,1
    - Dst: to_wire
      Src: /src/dnsmasq/src/rfc1035.c:951,1
    - Dst: blockdata_expand
      Src: /src/dnsmasq/src/rfc1035.c:952,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:954,1
    - Dst: blockdata_expand
      Src: /src/dnsmasq/src/rfc1035.c:966,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:968,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:978,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:980,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:988,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:990,1
    - Dst: private_net
      Src: /src/dnsmasq/src/rfc1035.c:996,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:996,1
    - Dst: private_net6
      Src: /src/dnsmasq/src/rfc1035.c:1000,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1000,1
    - Dst: cache_send_ipset
      Src: /src/dnsmasq/src/rfc1035.c:1012,1
    - Dst: add_to_ipset
      Src: /src/dnsmasq/src/rfc1035.c:1015,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1016,1
    - Dst: cache_send_ipset
      Src: /src/dnsmasq/src/rfc1035.c:1023,1
    - Dst: add_to_nftset
      Src: /src/dnsmasq/src/rfc1035.c:1026,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1027,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:1035,1
    - Dst: next_uid
      Src: /src/dnsmasq/src/rfc1035.c:1038,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/rfc1035.c:1046,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:1053,1
    - Dst: log_txt
      Src: /src/dnsmasq/src/rfc1035.c:1057,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1059,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:1063,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1077,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1079,1
    - Dst: find_soa
      Src: /src/dnsmasq/src/rfc1035.c:1081,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:1097,1
    - Dst: next_uid
      Src: /src/dnsmasq/src/rfc1035.c:1100,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/rfc1035.c:1115,1
    CyclomaticComplexity: 111
    EdgeCount: 111
    ICount: 245
    argCount: 9
    argNames:
    - header
    - qlen
    - name
    - now
    - ipsets
    - nftsets
    - check_rebind
    - no_cache_dnssec
    - secure
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    - time_t
    - struct ipsets*
    - struct ipsets*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 1118
    functionName: extract_addresses
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 2
    functionsReached:
    - add_to_ipset
    - blockdata_expand
    - ntohs
    - CHECK_LEN
    - cache_end_insert
    - rr_on_list
    - next_uid
    - find_soa
    - PUTLONG
    - skip_questions
    - log_txt
    - private_net6
    - in_arpa_name_2_addr
    - blockdata_free
    - memcpy
    - extract_name
    - cache_insert
    - log_query
    - option_bool
    - cache_send_ipset
    - GETSHORT
    - RCODE
    - to_wire
    - GETLONG
    - blockdata_alloc
    - rrfilter_desc
    - private_net
    - cache_start_insert
    - add_to_nftset
    linkageType: ''
    returnType: int
    signature: "int extract_addresses(struct dns_header *header, size_t qlen, char
      *name, time_t now, \n\t\t      struct ipsets *ipsets, struct ipsets *nftsets,
      int check_rebind,\n\t\t      int no_cache_dnssec, int secure)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/dnsmasq/src/rfc1035.c:1127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1131
    functionName: safe_name
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - isprint
    linkageType: ''
    returnType: int
    signature: int safe_name(char *name)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1141,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc1035.c:1147,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:1150,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1152,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:1156,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:1159,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1161,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1162,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:1163,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1164,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:1166,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:1174,1
    - Dst: safe_name
      Src: /src/dnsmasq/src/rfc1035.c:1176,1
    - Dst: safe_name
      Src: /src/dnsmasq/src/rfc1035.c:1176,1
    - Dst: ubus_event_bcast_connmark_allowlist_resolved
      Src: /src/dnsmasq/src/rfc1035.c:1177,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1185,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc1035.c:1186,1
    - Dst: safe_name
      Src: /src/dnsmasq/src/rfc1035.c:1186,1
    - Dst: ubus_event_bcast_connmark_allowlist_resolved
      Src: /src/dnsmasq/src/rfc1035.c:1187,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1195,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc1035.c:1196,1
    - Dst: safe_name
      Src: /src/dnsmasq/src/rfc1035.c:1196,1
    - Dst: ubus_event_bcast_connmark_allowlist_resolved
      Src: /src/dnsmasq/src/rfc1035.c:1197,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 46
    argCount: 3
    argNames:
    - header
    - len
    - mark
    argTypes:
    - struct dns_header*
    - size_t
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1133
    functionDepth: 3
    functionLinenumber: 1133
    functionLinenumberEnd: 1203
    functionName: report_addresses
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 4
    functionsReached:
    - extract_name
    - ubus_event_bcast_connmark_allowlist_resolved
    - skip_questions
    - ntohs
    - CHECK_LEN
    - GETSHORT
    - GETLONG
    - safe_name
    - strcmp
    - RCODE
    - memcpy
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void report_addresses(struct dns_header *header, size_t len, u32 mark)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1219,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/rfc1035.c:1219,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1222,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1222,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:1225,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1228,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1229,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1250,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 27
    argCount: 5
    argNames:
    - header
    - qlen
    - name
    - typep
    - classp
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    - unsigned short*
    - unsigned short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1208
    functionDepth: 2
    functionLinenumber: 1208
    functionLinenumberEnd: 1255
    functionName: extract_request
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 4
    functionsReached:
    - extract_name
    - option_bool
    - ntohs
    - GETSHORT
    - OPCODE
    linkageType: ''
    returnType: unsigned int
    signature: "unsigned int extract_request(struct dns_header *header, size_t qlen,
      char *name,\n\t\t\t     unsigned short *typep, unsigned short *classp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:1264,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:1265,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:1266,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1268,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1270,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1272,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1275,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1283,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:1284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - header
    - flags
    - ede
    argTypes:
    - struct dns_header*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1286
      start: 1257
    functionDepth: 1
    functionLinenumber: 1257
    functionLinenumberEnd: 1286
    functionName: setup_reply
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 2
    functionsReached:
    - log_query
    - htons
    - SET_RCODE
    linkageType: ''
    returnType: void
    signature: void setup_reply(struct dns_header *header, unsigned int flags, int
      ede)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1298,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1302,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1306,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1310,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1314,1
    - Dst: cache_find_non_terminal
      Src: /src/dnsmasq/src/rfc1035.c:1317,1
    - Dst: is_name_synthetic
      Src: /src/dnsmasq/src/rfc1035.c:1320,1
    - Dst: is_name_synthetic
      Src: /src/dnsmasq/src/rfc1035.c:1321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 2
    argNames:
    - name
    - now
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1289
    functionDepth: 2
    functionLinenumber: 1289
    functionLinenumberEnd: 1325
    functionName: check_for_local_domain
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 4
    functionsReached:
    - cache_find_non_terminal
    - is_name_synthetic
    - hostname_issubdomain
    linkageType: ''
    returnType: int
    signature: int check_for_local_domain(char *name, time_t now)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:1335,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1338,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:1340,1
    - Dst: skip_name
      Src: /src/dnsmasq/src/rfc1035.c:1343,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1346,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1347,1
    - Dst: GETLONG
      Src: /src/dnsmasq/src/rfc1035.c:1348,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1349,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:1359,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1362,1
    - Dst: is_same_net_prefix
      Src: /src/dnsmasq/src/rfc1035.c:1365,1
    - Dst: CHECK_LEN
      Src: /src/dnsmasq/src/rfc1035.c:1372,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1375,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc1035.c:1378,1
    - Dst: ADD_RDLEN
      Src: /src/dnsmasq/src/rfc1035.c:1383,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 5
    argNames:
    - header
    - qlen
    - baddr
    - name
    - ttlp
    argTypes:
    - struct dns_header*
    - size_t
    - struct bogus_addr*
    - char*
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1327
    functionDepth: 3
    functionLinenumber: 1327
    functionLinenumberEnd: 1388
    functionName: check_bad_address
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - extract_name
    - is_same_net6
    - ADD_RDLEN
    - skip_questions
    - ntohs
    - CHECK_LEN
    - GETSHORT
    - is_same_net_prefix
    - GETLONG
    - skip_name
    - memcpy
    linkageType: ''
    returnType: int
    signature: int check_bad_address(struct dns_header *header, size_t qlen, struct
      bogus_addr *baddr, char *name, unsigned long *ttlp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_bad_address
      Src: /src/dnsmasq/src/rfc1035.c:1397,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/rfc1035.c:1401,1
    - Dst: cache_insert
      Src: /src/dnsmasq/src/rfc1035.c:1402,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/rfc1035.c:1403,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - header
    - qlen
    - name
    - now
    argTypes:
    - struct dns_header*
    - size_t
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1393
    functionDepth: 4
    functionLinenumber: 1393
    functionLinenumberEnd: 1410
    functionName: check_for_bogus_wildcard
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 2
    functionsReached:
    - cache_insert
    - log_query
    - check_bad_address
    - cache_end_insert
    - cache_start_insert
    linkageType: ''
    returnType: int
    signature: int check_for_bogus_wildcard(struct dns_header *header, size_t qlen,
      char *name, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_bad_address
      Src: /src/dnsmasq/src/rfc1035.c:1414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - header
    - qlen
    argTypes:
    - struct dns_header*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1412
    functionDepth: 4
    functionLinenumber: 1412
    functionLinenumberEnd: 1415
    functionName: check_for_ignored_address
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 2
    functionsReached:
    - check_bad_address
    linkageType: ''
    returnType: int
    signature: int check_for_ignored_address(struct dns_header *header, size_t qlen)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/dnsmasq/src/rfc1035.c:1430,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1437,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1438,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1442,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc1035.c:1443,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1448,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1449,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1453,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1459,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1461,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1462,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/rfc1035.c:1463,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1466,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1472,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1473,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1474,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1479,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1480,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1481,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1486,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1487,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1492,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1493,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1494,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1498,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1499,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/rfc1035.c:1500,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc1035.c:1507,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1507,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1509,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1514,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1515,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1516,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1518,1
    - Dst: va_arg
      Src: /src/dnsmasq/src/rfc1035.c:1523,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc1035.c:1524,1
    - Dst: CHECK_LIMIT
      Src: /src/dnsmasq/src/rfc1035.c:1527,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc1035.c:1529,1
    - Dst: va_end
      Src: /src/dnsmasq/src/rfc1035.c:1534,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1538,1
    - Dst: va_end
      Src: /src/dnsmasq/src/rfc1035.c:1544,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 94
    argCount: 10
    argNames:
    - header
    - limit
    - truncp
    - nameoffset
    - pp
    - ttl
    - offset
    - type
    - class
    - format
    argTypes:
    - struct dns_header*
    - char*
    - int*
    - int
    - unsigned char**
    - unsigned long
    - int*
    - unsigned short
    - unsigned short
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1417
    functionDepth: 1
    functionLinenumber: 1417
    functionLinenumberEnd: 1550
    functionName: add_resource_record
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - PUTLONG
    - strlen
    - va_arg
    - CHECK_LIMIT
    - do_rfc1035_name
    - va_start
    - PUTSHORT
    - va_end
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int add_resource_record(struct dns_header *header, char *limit, int
      *truncp, int nameoffset, unsigned char **pp, \n\t\t\tunsigned long ttl, int
      *offset, unsigned short type, unsigned short class, char *format, ...)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1427
    functionDepth: 0
    functionLinenumber: 1427
    functionLinenumberEnd: 1429
    functionName: CHECK_LIMIT
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LIMIT(size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc1035.c:1554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - crecp
    - now
    argTypes:
    - struct crec*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1552
    functionDepth: 0
    functionLinenumber: 1552
    functionLinenumberEnd: 1555
    functionName: crec_isstale
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - difftime
    linkageType: ''
    returnType: int
    signature: int crec_isstale(struct crec *crecp, time_t now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc1035.c:1559,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 2
    argNames:
    - crecp
    - now
    argTypes:
    - struct crec*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1557
    functionDepth: 0
    functionLinenumber: 1557
    functionLinenumberEnd: 1588
    functionName: crec_ttl
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - difftime
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long crec_ttl(struct crec *crecp, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1590
    functionDepth: 1
    functionLinenumber: 1590
    functionLinenumberEnd: 1593
    functionName: cache_not_validated
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 0
    functionsReached:
    - option_bool
    linkageType: ''
    returnType: int
    signature: int cache_not_validated(const struct crec *crecp)
  - BBCount: 139
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1624,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1625,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc1035.c:1626,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/rfc1035.c:1627,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:1638,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/rfc1035.c:1648,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1651,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc1035.c:1652,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:1657,1
    - Dst: crec_isstale
      Src: /src/dnsmasq/src/rfc1035.c:1662,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1677,1
    - Dst: record_source
      Src: /src/dnsmasq/src/rfc1035.c:1677,1
    - Dst: cache_get_cname_target
      Src: /src/dnsmasq/src/rfc1035.c:1685,1
    - Dst: cache_not_validated
      Src: /src/dnsmasq/src/rfc1035.c:1689,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1697,1
    - Dst: record_source
      Src: /src/dnsmasq/src/rfc1035.c:1697,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1698,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:1699,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/rfc1035.c:1709,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1717,1
    - Dst: cache_make_stat
      Src: /src/dnsmasq/src/rfc1035.c:1728,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1734,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1735,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1747,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/rfc1035.c:1747,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1754,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1766,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1770,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1771,1
    - Dst: in_arpa_name_2_addr
      Src: /src/dnsmasq/src/rfc1035.c:1780,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1785,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc1035.c:1800,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc1035.c:1809,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc1035.c:1815,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1823,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1824,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1833,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1835,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1836,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/rfc1035.c:1842,1
    - Dst: cache_not_validated
      Src: /src/dnsmasq/src/rfc1035.c:1848,1
    - Dst: crec_isstale
      Src: /src/dnsmasq/src/rfc1035.c:1854,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1876,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1884,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/rfc1035.c:1884,1
    - Dst: record_source
      Src: /src/dnsmasq/src/rfc1035.c:1885,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1887,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:1888,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/rfc1035.c:1889,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/rfc1035.c:1892,1
    - Dst: is_rev_synth
      Src: /src/dnsmasq/src/rfc1035.c:1895,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1899,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1901,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1906,1
    - Dst: private_net6
      Src: /src/dnsmasq/src/rfc1035.c:1907,1
    - Dst: private_net
      Src: /src/dnsmasq/src/rfc1035.c:1907,1
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/rfc1035.c:1908,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1914,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1929,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/rfc1035.c:1937,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1941,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1943,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc1035.c:1946,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:1953,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc1035.c:1959,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1968,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:1969,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:1977,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:1982,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:1988,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc1035.c:1993,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:1998,1
    - Dst: cache_not_validated
      Src: /src/dnsmasq/src/rfc1035.c:2004,1
    - Dst: crec_isstale
      Src: /src/dnsmasq/src/rfc1035.c:2009,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:2028,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2035,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2050,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc1035.c:2059,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2063,1
    - Dst: record_source
      Src: /src/dnsmasq/src/rfc1035.c:2064,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2066,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:2067,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2071,1
    - Dst: is_name_synthetic
      Src: /src/dnsmasq/src/rfc1035.c:2073,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2076,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2077,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:2087,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2094,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2095,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:2104,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:2104,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2105,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2109,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2110,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:2112,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:2122,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2128,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2129,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:2162,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2166,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2167,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:2177,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2181,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2186,1
    - Dst: cache_not_validated
      Src: /src/dnsmasq/src/rfc1035.c:2198,1
    - Dst: crec_isstale
      Src: /src/dnsmasq/src/rfc1035.c:2203,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:2216,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/rfc1035.c:2230,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2239,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:2240,1
    - Dst: log_txt
      Src: /src/dnsmasq/src/rfc1035.c:2246,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2248,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2250,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc1035.c:2253,1
    - Dst: strchr
      Src: /src/dnsmasq/src/rfc1035.c:2253,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2257,1
    - Dst: rr_on_list
      Src: /src/dnsmasq/src/rfc1035.c:2261,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2271,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2276,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2299,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/rfc1035.c:2305,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2306,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:2307,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc1035.c:2326,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/rfc1035.c:2330,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/rfc1035.c:2337,1
    - Dst: crec_ttl
      Src: /src/dnsmasq/src/rfc1035.c:2338,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/rfc1035.c:2362,1
    - Dst: log_query
      Src: /src/dnsmasq/src/rfc1035.c:2365,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:2369,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:2371,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/rfc1035.c:2373,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:2375,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:2376,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc1035.c:2377,1
    CyclomaticComplexity: 260
    EdgeCount: 260
    ICount: 435
    argCount: 11
    argNames:
    - header
    - limit
    - qlen
    - local_addr
    - local_netmask
    - now
    - ad_reqd
    - do_bit
    - no_cache
    - stale
    - filtered
    argTypes:
    - struct dns_header*
    - char*
    - size_t
    - struct in_addr
    - struct in_addr
    - time_t
    - int
    - int
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 1596
    functionDepth: 3
    functionLinenumber: 1596
    functionLinenumberEnd: 2387
    functionName: answer_request
    functionSourceFile: /src/dnsmasq/src/rfc1035.c
    functionUses: 3
    functionsReached:
    - cache_get_name
    - add_resource_record
    - ntohs
    - hostname_isequal
    - cache_find_by_name
    - OPCODE
    - crec_ttl
    - rr_on_list
    - record_source
    - hostname_issubdomain
    - is_rev_synth
    - cache_find_by_addr
    - is_name_synthetic
    - skip_questions
    - log_txt
    - cache_get_cname_target
    - private_net6
    - is_same_net
    - in_arpa_name_2_addr
    - htons
    - strcmp
    - extract_name
    - log_query
    - option_bool
    - GETSHORT
    - enumerate_interfaces
    - cache_make_stat
    - strcpy
    - crec_isstale
    - blockdata_retrieve
    - SET_RCODE
    - IN6_ARE_ADDR_EQUAL
    - cache_not_validated
    - strchr
    - private_net
    - lookup_domain
    linkageType: ''
    returnType: size_t
    signature: "size_t answer_request(struct dns_header *header, char *limit, size_t
      qlen,  \n\t\t      struct in_addr local_addr, struct in_addr local_netmask,
      \n\t\t      time_t now, int ad_reqd, int do_bit, int no_cache, int *stale, int
      *filtered)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: lua_open
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lua_open()
  - BBCount: 80
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/dnsmasq/src/helper.c:88,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/helper.c:88,1
    - Dst: fork
      Src: /src/dnsmasq/src/helper.c:88,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:90,1
    - Dst: _exit
      Src: /src/dnsmasq/src/helper.c:91,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:96,1
    - Dst: sigemptyset
      Src: /src/dnsmasq/src/helper.c:104,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/helper.c:105,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/helper.c:106,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/helper.c:107,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:109,1
    - Dst: setgroups
      Src: /src/dnsmasq/src/helper.c:112,1
    - Dst: setgid
      Src: /src/dnsmasq/src/helper.c:113,1
    - Dst: setuid
      Src: /src/dnsmasq/src/helper.c:114,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:116,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:118,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:122,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:124,1
    - Dst: _exit
      Src: /src/dnsmasq/src/helper.c:126,1
    - Dst: close_fds
      Src: /src/dnsmasq/src/helper.c:134,1
    - Dst: lua_open
      Src: /src/dnsmasq/src/helper.c:140,1
    - Dst: luaL_openlibs
      Src: /src/dnsmasq/src/helper.c:141,1
    - Dst: luaL_dofile
      Src: /src/dnsmasq/src/helper.c:144,1
    - Dst: lua_tostring
      Src: /src/dnsmasq/src/helper.c:145,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:148,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:149,1
    - Dst: _
      Src: /src/dnsmasq/src/helper.c:150,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:155,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:155,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:157,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:161,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:163,1
    - Dst: _exit
      Src: /src/dnsmasq/src/helper.c:165,1
    - Dst: lua_pop
      Src: /src/dnsmasq/src/helper.c:168,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:169,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:170,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:171,1
    - Dst: lua_pop
      Src: /src/dnsmasq/src/helper.c:173,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:179,1
    - Dst: free
      Src: /src/dnsmasq/src/helper.c:194,1
    - Dst: read_write
      Src: /src/dnsmasq/src/helper.c:199,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:204,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:205,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:206,1
    - Dst: _exit
      Src: /src/dnsmasq/src/helper.c:209,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:247,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:250,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:252,1
    - Dst: malloc
      Src: /src/dnsmasq/src/helper.c:257,1
    - Dst: read_write
      Src: /src/dnsmasq/src/helper.c:260,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:267,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:269,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:276,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:279,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:281,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/helper.c:296,1
    - Dst: strchr
      Src: /src/dnsmasq/src/helper.c:298,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/helper.c:309,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/helper.c:311,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:316,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:324,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:325,1
    - Dst: lua_pop
      Src: /src/dnsmasq/src/helper.c:326,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:329,1
    - Dst: lua_newtable
      Src: /src/dnsmasq/src/helper.c:330,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:331,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:332,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:333,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:334,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:335,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:336,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:337,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:342,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:343,1
    - Dst: lua_pop
      Src: /src/dnsmasq/src/helper.c:344,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:347,1
    - Dst: lua_newtable
      Src: /src/dnsmasq/src/helper.c:348,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:349,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:350,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:351,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:352,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:353,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:354,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:355,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:360,1
    - Dst: lua_type
      Src: /src/dnsmasq/src/helper.c:361,1
    - Dst: lua_pop
      Src: /src/dnsmasq/src/helper.c:362,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:365,1
    - Dst: lua_newtable
      Src: /src/dnsmasq/src/helper.c:366,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:367,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:368,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:369,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:370,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:371,1
    - Dst: lua_getglobal
      Src: /src/dnsmasq/src/helper.c:376,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:377,1
    - Dst: lua_newtable
      Src: /src/dnsmasq/src/helper.c:378,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:382,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:383,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:384,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:385,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:386,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:387,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:392,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:393,1
    - Dst: strlen
      Src: /src/dnsmasq/src/helper.c:396,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:398,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:399,1
    - Dst: lua_pushnumber
      Src: /src/dnsmasq/src/helper.c:403,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:404,1
    - Dst: lua_pushnumber
      Src: /src/dnsmasq/src/helper.c:406,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:407,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:412,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:413,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:418,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:419,1
    - Dst: lua_pushnumber
      Src: /src/dnsmasq/src/helper.c:425,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:426,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:429,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:433,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:434,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:437,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:438,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:443,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:447,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:448,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:449,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:450,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:451,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:452,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:455,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:456,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:457,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:460,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/helper.c:463,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:464,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:465,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:470,1
    - Dst: grab_extradata_lua
      Src: /src/dnsmasq/src/helper.c:471,1
    - Dst: lua_pushnumber
      Src: /src/dnsmasq/src/helper.c:476,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:477,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:482,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:483,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:488,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:489,1
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:492,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:493,1
    - Dst: lua_call
      Src: /src/dnsmasq/src/helper.c:495,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:505,1
    - Dst: pipe
      Src: /src/dnsmasq/src/helper.c:505,1
    - Dst: fork
      Src: /src/dnsmasq/src/helper.c:509,1
    - Dst: sleep
      Src: /src/dnsmasq/src/helper.c:510,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:514,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:516,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:517,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:525,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:529,1
    - Dst: fdopen
      Src: /src/dnsmasq/src/helper.c:532,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:533,1
    - Dst: fgets
      Src: /src/dnsmasq/src/helper.c:536,1
    - Dst: strlen
      Src: /src/dnsmasq/src/helper.c:539,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:546,1
    - Dst: fclose
      Src: /src/dnsmasq/src/helper.c:548,1
    - Dst: wait
      Src: /src/dnsmasq/src/helper.c:556,1
    - Dst: WIFSIGNALED
      Src: /src/dnsmasq/src/helper.c:561,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:562,1
    - Dst: WTERMSIG
      Src: /src/dnsmasq/src/helper.c:562,1
    - Dst: WIFEXITED
      Src: /src/dnsmasq/src/helper.c:563,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/helper.c:563,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:564,1
    - Dst: WEXITSTATUS
      Src: /src/dnsmasq/src/helper.c:564,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:575,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:578,1
    - Dst: dup2
      Src: /src/dnsmasq/src/helper.c:579,1
    - Dst: dup2
      Src: /src/dnsmasq/src/helper.c:580,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:581,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:587,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:588,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:589,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:592,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:593,1
    - Dst: strlen
      Src: /src/dnsmasq/src/helper.c:593,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:596,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:597,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:599,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:600,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:603,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:609,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:612,1
    - Dst: if
      Src: /src/dnsmasq/src/helper.c:616,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:618,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:621,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:622,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:628,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:632,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:633,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:634,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:635,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:636,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:637,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:640,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:641,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:642,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:645,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/helper.c:650,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:651,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:656,1
    - Dst: grab_extradata
      Src: /src/dnsmasq/src/helper.c:657,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:660,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:661,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:663,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:667,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/helper.c:667,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/helper.c:671,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/helper.c:672,1
    - Dst: close
      Src: /src/dnsmasq/src/helper.c:673,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/helper.c:676,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/helper.c:678,1
    - Dst: execl
      Src: /src/dnsmasq/src/helper.c:681,1
    - Dst: send_event
      Src: /src/dnsmasq/src/helper.c:688,1
    - Dst: _exit
      Src: /src/dnsmasq/src/helper.c:689,1
    CyclomaticComplexity: 124
    EdgeCount: 124
    ICount: 369
    argCount: 5
    argNames:
    - event_fd
    - err_fd
    - uid
    - gid
    - max_fd
    argTypes:
    - int
    - int
    - uid_t
    - gid_t
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 691
    functionName: create_helper
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached:
    - lua_open
    - setgroups
    - malloc
    - WIFSIGNALED
    - close
    - fclose
    - sigemptyset
    - fdopen
    - sigaction
    - fcntl
    - my_setenv
    - strlen
    - grab_extradata_lua
    - if
    - legal_hostname
    - luaL_dofile
    - WTERMSIG
    - sprintf
    - luaL_openlibs
    - lua_type
    - grab_extradata
    - sleep
    - send_event
    - lua_pop
    - fgets
    - pipe
    - lua_newtable
    - option_bool
    - setuid
    - fix_fd
    - fork
    - _exit
    - lua_tostring
    - _
    - lua_pushstring
    - lua_call
    - wait
    - lua_setfield
    - WIFEXITED
    - free
    - strrchr
    - lua_getglobal
    - inet_ntop
    - strcpy
    - lua_pushnumber
    - dup2
    - setgid
    - read_write
    - strchr
    - close_fds
    - WEXITSTATUS
    - execl
    linkageType: ''
    returnType: int
    signature: int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long
      max_fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unsetenv
      Src: /src/dnsmasq/src/helper.c:698,1
    - Dst: setenv
      Src: /src/dnsmasq/src/helper.c:699,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - name
    - value
    - error
    argTypes:
    - char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 702
    functionName: my_setenv
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - unsetenv
    - setenv
    linkageType: ''
    returnType: void
    signature: void my_setenv(const char *name, const char *value, int *error)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dnsmasq/src/helper.c:724,1
    - Dst: my_setenv
      Src: /src/dnsmasq/src/helper.c:730,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 4
    argNames:
    - buf
    - end
    - env
    - err
    argTypes:
    - unsigned char*
    - unsigned char*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 733
    functionName: grab_extradata
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - my_setenv
    - strchr
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *grab_extradata(unsigned char *buf, unsigned char *end,  char
      *env, int *err)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/dnsmasq/src/helper.c:749,1
    - Dst: lua_setfield
      Src: /src/dnsmasq/src/helper.c:750,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - buf
    - end
    - field
    argTypes:
    - unsigned char*
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 754
    functionName: grab_extradata_lua
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - lua_pushstring
    - lua_setfield
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *grab_extradata_lua(unsigned char *buf, unsigned char
      *end, char *field)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/helper.c:767,1
    - Dst: free
      Src: /src/dnsmasq/src/helper.c:770,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 774
    functionName: buff_alloc
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached:
    - free
    - whine_malloc::whine_malloc
    linkageType: ''
    returnType: void
    signature: void buff_alloc(size_t size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/helper.c:796,1
    - Dst: buff_alloc
      Src: /src/dnsmasq/src/helper.c:798,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:814,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/helper.c:815,1
    - Dst: difftime
      Src: /src/dnsmasq/src/helper.c:825,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:832,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:837,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:842,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 4
    argNames:
    - action
    - lease
    - hostname
    - now
    argTypes:
    - int
    - struct dhcp_lease*
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 777
    functionDepth: 2
    functionLinenumber: 777
    functionLinenumberEnd: 846
    functionName: queue_script
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - buff_alloc
    - difftime
    - memcpy
    - indextoname
    - strlen
    linkageType: ''
    returnType: void
    signature: void queue_script(int action, struct dhcp_lease *lease, char *hostname,
      time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/helper.c:855,1
    - Dst: buff_alloc
      Src: /src/dnsmasq/src/helper.c:858,1
    - Dst: memset
      Src: /src/dnsmasq/src/helper.c:859,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/helper.c:863,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/helper.c:865,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - client
    - if_index
    - prefix
    - prefix_len
    argTypes:
    - struct in6_addr*
    - int
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 849
    functionDepth: 2
    functionLinenumber: 849
    functionLinenumberEnd: 868
    functionName: queue_relay_snoop
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached:
    - buff_alloc
    - memset
    - sprintf
    - indextoname
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void queue_relay_snoop(struct in6_addr *client, int if_index, struct
      in6_addr *prefix, int prefix_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/helper.c:881,1
    - Dst: buff_alloc
      Src: /src/dnsmasq/src/helper.c:882,1
    - Dst: memset
      Src: /src/dnsmasq/src/helper.c:883,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - file_len
    - filename
    - peer
    argTypes:
    - off_t
    - char*
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 873
    functionDepth: 2
    functionLinenumber: 873
    functionLinenumberEnd: 897
    functionName: queue_tftp
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - buff_alloc
    - strlen
    - memset
    - memcpy
    linkageType: ''
    returnType: void
    signature: void queue_tftp(off_t file_len, char *filename, union mysockaddr *peer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: buff_alloc
      Src: /src/dnsmasq/src/helper.c:906,1
    - Dst: memset
      Src: /src/dnsmasq/src/helper.c:907,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/helper.c:917,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - action
    - mac
    - maclen
    - family
    - addr
    argTypes:
    - int
    - unsigned char*
    - int
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 900
    functionDepth: 2
    functionLinenumber: 900
    functionLinenumberEnd: 920
    functionName: queue_arp
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 1
    functionsReached:
    - buff_alloc
    - memcpy
    - memset
    linkageType: ''
    returnType: void
    signature: void queue_arp(int action, unsigned char *mac, int maclen, int family,
      union all_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: helper_buf_empty
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int helper_buf_empty(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/dnsmasq/src/helper.c:934,1
    - Dst: memmove
      Src: /src/dnsmasq/src/helper.c:937,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 946
    functionName: helper_write
    functionSourceFile: /src/dnsmasq/src/helper.c
    functionUses: 0
    functionsReached:
    - memmove
    - write
    linkageType: ''
    returnType: void
    signature: void helper_write(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: option_len
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_len(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: option_ptr
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_ptr(opt, i)
  - BBCount: 265
    BranchProfiles: []
    Callsites:
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:125,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:127,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:130,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:133,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:138,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:140,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/rfc2131.c:147,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:156,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:160,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:162,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:166,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:167,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:169,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:170,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:171,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:172,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:189,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:197,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:198,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:204,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:208,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:208,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:208,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:208,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:209,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:212,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:212,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:212,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:212,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:213,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:229,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:229,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:229,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:229,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:230,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:231,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:231,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:240,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:241,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:244,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:244,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:246,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:247,1
    - Dst: lease_find_by_client
      Src: /src/dnsmasq/src/rfc2131.c:251,1
    - Dst: extended_hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:262,1
    - Dst: memcmp_masked
      Src: /src/dnsmasq/src/rfc2131.c:268,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:305,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:306,1
    - Dst: IN_CLASSA
      Src: /src/dnsmasq/src/rfc2131.c:322,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:322,1
    - Dst: IN_CLASSA
      Src: /src/dnsmasq/src/rfc2131.c:322,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:322,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:323,1
    - Dst: IN_CLASSB
      Src: /src/dnsmasq/src/rfc2131.c:324,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:324,1
    - Dst: IN_CLASSB
      Src: /src/dnsmasq/src/rfc2131.c:324,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:324,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:325,1
    - Dst: IN_CLASSC
      Src: /src/dnsmasq/src/rfc2131.c:326,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:326,1
    - Dst: IN_CLASSC
      Src: /src/dnsmasq/src/rfc2131.c:326,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:326,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:327,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:344,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:345,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:353,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:354,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:384,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:385,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:389,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:391,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:393,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:395,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:395,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:400,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:405,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:408,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:409,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:409,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:410,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:414,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:415,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:415,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:416,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:433,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:436,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:438,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:440,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:441,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:444,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:445,1
    - Dst: match_bytes
      Src: /src/dnsmasq/src/rfc2131.c:446,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:446,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:455,1
    - Dst: match_bytes
      Src: /src/dnsmasq/src/rfc2131.c:458,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:458,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:458,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:479,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:481,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:483,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:484,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:485,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:503,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:506,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:507,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:507,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:518,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:520,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:520,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:520,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:521,1
    - Dst: match_vendor_opts
      Src: /src/dnsmasq/src/rfc2131.c:523,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:525,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/rfc2131.c:527,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:528,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:528,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:528,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/rfc2131.c:529,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:529,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:530,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:530,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:530,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc2131.c:535,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:536,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc2131.c:545,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:546,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:563,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:564,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:568,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:588,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:601,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:604,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:605,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:611,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:616,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:619,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:620,1
    - Dst: lease_find_by_client
      Src: /src/dnsmasq/src/rfc2131.c:624,1
    - Dst: address_available
      Src: /src/dnsmasq/src/rfc2131.c:625,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc2131.c:630,1
    - Dst: address_allocate
      Src: /src/dnsmasq/src/rfc2131.c:633,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:634,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:640,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:641,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:645,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:648,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:648,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:653,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:656,1
    - Dst: lease4_allocate
      Src: /src/dnsmasq/src/rfc2131.c:661,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:662,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:668,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/rfc2131.c:670,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:670,1
    - Dst: lease_set_expires
      Src: /src/dnsmasq/src/rfc2131.c:672,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:673,1
    - Dst: lease_set_interface
      Src: /src/dnsmasq/src/rfc2131.c:675,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:677,1
    - Dst: do_options
      Src: /src/dnsmasq/src/rfc2131.c:678,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:678,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:684,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:686,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:689,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:692,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:694,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:702,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:721,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:728,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/rfc2131.c:739,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:742,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:744,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:745,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:745,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/rfc2131.c:753,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:760,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:762,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:763,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:763,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:763,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:766,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc2131.c:777,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:789,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc2131.c:795,1
    - Dst: strip_hostname
      Src: /src/dnsmasq/src/rfc2131.c:800,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:802,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc2131.c:811,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:813,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:814,1
    - Dst: CONFIG_CLID::CONFIG_CLID
      Src: /src/dnsmasq/src/rfc2131.c:814,1
    - Dst: hwaddr::hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:814,1
    - Dst: known_id::known_id
      Src: /src/dnsmasq/src/rfc2131.c:816,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:837,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:841,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:863,1
    - Dst: is_pxe_client
      Src: /src/dnsmasq/src/rfc2131.c:869,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:871,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:873,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:873,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:879,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:880,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:880,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:880,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:880,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:883,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:884,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:893,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:893,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:897,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:897,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:904,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:905,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:911,1
    - Dst: a_record_from_hosts
      Src: /src/dnsmasq/src/rfc2131.c:916,1
    - Dst: strchr
      Src: /src/dnsmasq/src/rfc2131.c:922,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc2131.c:923,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc2131.c:926,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:929,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:930,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:930,1
    - Dst: pxe_misc
      Src: /src/dnsmasq/src/rfc2131.c:931,1
    - Dst: prune_vendor_opts
      Src: /src/dnsmasq/src/rfc2131.c:933,1
    - Dst: do_encap_opts
      Src: /src/dnsmasq/src/rfc2131.c:940,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:943,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:944,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:944,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:945,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:948,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:950,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:960,1
    - Dst: option_filter
      Src: /src/dnsmasq/src/rfc2131.c:970,1
    - Dst: find_boot
      Src: /src/dnsmasq/src/rfc2131.c:971,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc2131.c:977,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:980,1
    - Dst: pxe_uefi_workaround
      Src: /src/dnsmasq/src/rfc2131.c:991,1
    - Dst: a_record_from_hosts
      Src: /src/dnsmasq/src/rfc2131.c:1000,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:1003,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1006,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1008,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:1008,1
    - Dst: pxe_misc
      Src: /src/dnsmasq/src/rfc2131.c:1009,1
    - Dst: prune_vendor_opts
      Src: /src/dnsmasq/src/rfc2131.c:1010,1
    - Dst: do_encap_opts
      Src: /src/dnsmasq/src/rfc2131.c:1012,1
    - Dst: pxe_opts
      Src: /src/dnsmasq/src/rfc2131.c:1012,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:1023,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:1025,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:1026,1
    - Dst: handle_encap
      Src: /src/dnsmasq/src/rfc2131.c:1029,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1032,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:1033,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1033,1
    - Dst: apply_delay
      Src: /src/dnsmasq/src/rfc2131.c:1035,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:1036,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1047,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:1050,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1050,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1050,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1051,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1059,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:1065,1
    - Dst: is_same_net_prefix
      Src: /src/dnsmasq/src/rfc2131.c:1072,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1077,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1077,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1083,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1092,1
    - Dst: address_available
      Src: /src/dnsmasq/src/rfc2131.c:1093,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1119,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1120,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:1121,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1121,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1128,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:1132,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc2131.c:1134,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1145,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1151,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:1154,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1154,1
    - Dst: extended_hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:1155,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1161,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:1166,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1167,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:1182,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1184,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:1185,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:1186,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1188,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1191,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1193,1
    - Dst: calc_time
      Src: /src/dnsmasq/src/rfc2131.c:1198,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1200,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1201,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1202,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1203,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1204,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1205,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:1210,1
    - Dst: do_options
      Src: /src/dnsmasq/src/rfc2131.c:1215,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1215,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1219,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:1220,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:1221,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:1224,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1227,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1228,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1228,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/rfc2131.c:1232,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1232,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1234,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1238,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1238,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1240,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc2131.c:1241,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1243,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1244,1
    - Dst: prettyprint_time
      Src: /src/dnsmasq/src/rfc2131.c:1246,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:1247,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1248,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1248,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:1261,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1262,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1263,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1263,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc2131.c:1267,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1269,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1272,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1277,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1279,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1281,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1290,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1291,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1293,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:1295,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1297,1
    - Dst: config_has_mac
      Src: /src/dnsmasq/src/rfc2131.c:1299,1
    - Dst: extended_hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:1302,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1304,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1304,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/rfc2131.c:1305,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1314,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1314,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1315,1
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc2131.c:1316,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1317,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1317,1
    - Dst: address_available
      Src: /src/dnsmasq/src/rfc2131.c:1326,1
    - Dst: config_find_by_address
      Src: /src/dnsmasq/src/rfc2131.c:1327,1
    - Dst: address_available
      Src: /src/dnsmasq/src/rfc2131.c:1329,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1329,1
    - Dst: config_find_by_address
      Src: /src/dnsmasq/src/rfc2131.c:1330,1
    - Dst: do_icmp_ping
      Src: /src/dnsmasq/src/rfc2131.c:1330,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1333,1
    - Dst: address_allocate
      Src: /src/dnsmasq/src/rfc2131.c:1334,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1335,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1339,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1339,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:1341,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1347,1
    - Dst: apply_delay
      Src: /src/dnsmasq/src/rfc2131.c:1350,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1352,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1352,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc2131.c:1358,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:1364,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1364,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1367,1
    - Dst: calc_time
      Src: /src/dnsmasq/src/rfc2131.c:1369,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1369,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:1370,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1371,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1372,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1372,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1372,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1373,1
    - Dst: do_options
      Src: /src/dnsmasq/src/rfc2131.c:1375,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1375,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:1378,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1382,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1384,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1387,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1392,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1399,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1405,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/rfc2131.c:1415,1
    - Dst: option_addr
      Src: /src/dnsmasq/src/rfc2131.c:1419,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1430,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1432,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc2131.c:1440,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1447,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1451,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1462,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1469,1
    - Dst: rand16
      Src: /src/dnsmasq/src/rfc2131.c:1475,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1480,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1488,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:1493,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1496,1
    - Dst: address_available
      Src: /src/dnsmasq/src/rfc2131.c:1502,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1503,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1504,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1510,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1511,1
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc2131.c:1512,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1514,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1515,1
    - Dst: config_find_by_address
      Src: /src/dnsmasq/src/rfc2131.c:1518,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1519,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1521,1
    - Dst: config_has_mac
      Src: /src/dnsmasq/src/rfc2131.c:1525,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:1527,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1528,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1528,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/rfc2131.c:1529,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1534,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1540,1
    - Dst: lease4_allocate
      Src: /src/dnsmasq/src/rfc2131.c:1544,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1547,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1555,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:1562,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1563,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1564,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1564,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1564,1
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:1565,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/rfc2131.c:1569,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc2131.c:1571,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1580,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:1583,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1583,1
    - Dst: free
      Src: /src/dnsmasq/src/rfc2131.c:1598,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1602,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1602,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1603,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1603,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1604,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1605,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1606,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1608,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1610,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1610,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1610,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1610,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1610,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1611,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1611,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1611,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1611,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1611,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1612,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1612,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1612,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1612,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1612,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1616,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1617,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1618,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1622,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1624,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1625,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1628,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc2131.c:1629,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1632,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1634,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1634,1
    - Dst: add_extradata_opt
      Src: /src/dnsmasq/src/rfc2131.c:1638,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc2131.c:1645,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1648,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:1648,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1651,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1653,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1654,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1658,1
    - Dst: host_from_dns
      Src: /src/dnsmasq/src/rfc2131.c:1664,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1666,1
    - Dst: calc_time
      Src: /src/dnsmasq/src/rfc2131.c:1671,1
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:1671,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/rfc2131.c:1672,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:1678,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:1688,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc2131.c:1697,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/rfc2131.c:1703,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1703,1
    - Dst: lease_set_expires
      Src: /src/dnsmasq/src/rfc2131.c:1705,1
    - Dst: lease_set_interface
      Src: /src/dnsmasq/src/rfc2131.c:1706,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1708,1
    - Dst: lease_set_agent_id
      Src: /src/dnsmasq/src/rfc2131.c:1711,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1711,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1711,1
    - Dst: lease_set_vendorclass
      Src: /src/dnsmasq/src/rfc2131.c:1713,1
    - Dst: lease_set_agent_id
      Src: /src/dnsmasq/src/rfc2131.c:1718,1
    - Dst: lease_set_vendorclass
      Src: /src/dnsmasq/src/rfc2131.c:1719,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1728,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:1730,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1731,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1732,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1732,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1732,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1733,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1735,1
    - Dst: do_options
      Src: /src/dnsmasq/src/rfc2131.c:1736,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1736,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:1740,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1743,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:1744,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1747,1
    - Dst: narrow_context
      Src: /src/dnsmasq/src/rfc2131.c:1753,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/rfc2131.c:1758,1
    - Dst: host_from_dns
      Src: /src/dnsmasq/src/rfc2131.c:1763,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc2131.c:1768,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc2131.c:1771,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1771,1
    - Dst: log_packet
      Src: /src/dnsmasq/src/rfc2131.c:1774,1
    - Dst: lease_set_interface
      Src: /src/dnsmasq/src/rfc2131.c:1778,1
    - Dst: clear_packet
      Src: /src/dnsmasq/src/rfc2131.c:1785,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1786,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1787,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1787,1
    - Dst: server_id
      Src: /src/dnsmasq/src/rfc2131.c:1787,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:1794,1
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc2131.c:1799,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:1800,1
    - Dst: do_options
      Src: /src/dnsmasq/src/rfc2131.c:1803,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/rfc2131.c:1803,1
    - Dst: dhcp_packet_size
      Src: /src/dnsmasq/src/rfc2131.c:1807,1
    CyclomaticComplexity: 472
    EdgeCount: 472
    ICount: 952
    argCount: 12
    argNames:
    - context
    - iface_name
    - int_index
    - sz
    - now
    - unicast_dest
    - loopback
    - is_inform
    - pxe
    - fallback
    - recvtime
    - leasequery_source
    argTypes:
    - struct dhcp_context*
    - char*
    - int
    - size_t
    - time_t
    - int
    - int
    - int*
    - int
    - struct in_addr
    - time_t
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 1811
    functionName: dhcp_reply
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached:
    - narrow_context
    - dhcp_packet_size
    - legal_hostname
    - print_mac
    - match_vendor_opts
    - address_allocate
    - memcmp_masked
    - IN_CLASSA
    - option_put
    - match_netid
    - is_same_net_prefix
    - do_encap_opts
    - option_filter
    - lease_set_agent_id
    - lease_set_vendorclass
    - pxe_opts
    - option_ptr
    - lease_set_interface
    - hostname_isequal
    - option_find
    - sanitise
    - CONFIG_CLID::CONFIG_CLID
    - handle_encap
    - lease_find_by_client
    - is_same_net
    - htons
    - find_config
    - memcpy
    - lease4_allocate
    - _
    - IN_CLASSC
    - a_record_from_hosts
    - option_put_string
    - known_id::known_id
    - run_tag_if
    - lease_set_hwaddr
    - pxe_uefi_workaround
    - difftime
    - lease_find_by_addr
    - strchr
    - free_space
    - safe_strncpy
    - do_icmp_ping
    - in_list
    - log_packet
    - lease_prune
    - hwaddr::hwaddr
    - IN_CLASSB
    - option_find1
    - sprintf
    - do_opt
    - clear_packet
    - host_from_dns
    - lease_set_hostname
    - extended_hwaddr
    - strcmp
    - have_config
    - pxe_misc
    - option_bool
    - my_syslog
    - enumerate_interfaces
    - get_domain
    - inet_ntop
    - add_extradata_opt
    - config_find_by_address
    - rand16
    - prune_vendor_opts
    - ntohl
    - find_boot
    - calc_time
    - server_id
    - htonl
    - strlen
    - is_pxe_client
    - strip_hostname
    - address_available
    - lease_add_extradata
    - match_bytes
    - do_options
    - expand_buf
    - apply_delay
    - snprintf
    - log_tags
    - free
    - config_has_mac
    - lease_set_expires
    - option_uint
    - prettyprint_time
    - option_len
    - memcmp
    - option_addr
    linkageType: ''
    returnType: size_t
    signature: "size_t dhcp_reply(struct dhcp_context *context, char *iface_name,
      int int_index,\n\t\t  size_t sz, time_t now, int unicast_dest, int loopback,\n\t\t
      \ int *is_inform, int pxe, struct in_addr fallback, time_t recvtime, struct
      in_addr leasequery_source)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 6
    argNames:
    - hwtype
    - hwlen
    - hwaddr
    - clid_len
    - clid
    - len_out
    argTypes:
    - int
    - int
    - unsigned char*
    - int
    - unsigned char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1821
    functionDepth: 0
    functionLinenumber: 1821
    functionLinenumberEnd: 1846
    functionName: extended_hwaddr
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: "unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char
      *hwaddr, \n\t\t\t\t      int clid_len, unsigned char *clid, int *len_out)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc2131.c:1850,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:1854,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - context
    - config
    - opt
    argTypes:
    - struct dhcp_context*
    - struct dhcp_config*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1848
    functionDepth: 1
    functionLinenumber: 1848
    functionLinenumberEnd: 1862
    functionName: calc_time
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - have_config
    - option_uint
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int calc_time(struct dhcp_context *context, struct dhcp_config
      *config, unsigned char *opt)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - context
    - fallback
    argTypes:
    - struct dhcp_context*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1864
    functionDepth: 0
    functionLinenumber: 1864
    functionLinenumberEnd: 1872
    functionName: server_id
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr server_id(struct dhcp_context *context, struct in_addr
      override, struct in_addr fallback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1884,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1886,1
    - Dst: isprint
      Src: /src/dnsmasq/src/rfc2131.c:1889,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - opt
    - buf
    argTypes:
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1874
    functionDepth: 0
    functionLinenumber: 1874
    functionLinenumberEnd: 1895
    functionName: sanitise
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 4
    functionsReached:
    - option_ptr
    - option_len
    - isprint
    linkageType: ''
    returnType: int
    signature: int sanitise(unsigned char *opt, char *buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1901,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc2131.c:1903,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1903,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - lease
    - opt
    argTypes:
    - struct dhcp_lease*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1898
    functionDepth: 2
    functionLinenumber: 1898
    functionLinenumberEnd: 1904
    functionName: add_extradata_opt
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - lease_add_extradata
    - option_ptr
    - option_len
    linkageType: ''
    returnType: void
    signature: void add_extradata_opt(struct dhcp_lease *lease, unsigned char *opt)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1910,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1910,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:1916,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/rfc2131.c:1919,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:1921,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1922,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1923,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1933,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc2131.c:1944,1
    - Dst: ubus_event_bcast
      Src: /src/dnsmasq/src/rfc2131.c:1945,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc2131.c:1946,1
    - Dst: ubus_event_bcast
      Src: /src/dnsmasq/src/rfc2131.c:1947,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 8
    argNames:
    - type
    - addr
    - ext_mac
    - mac_len
    - interface
    - string
    - err
    - xid
    argTypes:
    - char*
    - void*
    - unsigned char*
    - int
    - char*
    - char*
    - char*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1907
    functionDepth: 1
    functionLinenumber: 1907
    functionLinenumberEnd: 1949
    functionName: log_packet
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - option_bool
    - my_syslog
    - print_mac
    - ubus_event_bcast
    - strcmp
    - ntohl
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: "void log_packet(char *type, void *addr, unsigned char *ext_mac, \n\t\t
      \      int mac_len, char *interface, char *string, char *err, u32 xid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_string
      Src: /src/dnsmasq/src/rfc2131.c:1955,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:1955,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1955,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:1957,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:1958,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1958,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - start
    - xid
    argTypes:
    - unsigned char*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1951
    functionDepth: 1
    functionLinenumber: 1951
    functionLinenumberEnd: 1961
    functionName: log_options
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached:
    - option_string
    - option_ptr
    - my_syslog
    - option_len
    - ntohl
    linkageType: ''
    returnType: void
    signature: void log_options(unsigned char *start, u32 xid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:1978,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - p
    - end
    - opt
    - minsize
    argTypes:
    - unsigned char*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1963
    functionDepth: 0
    functionLinenumber: 1963
    functionLinenumberEnd: 1986
    functionName: option_find1
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - option_len
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *option_find1(unsigned char *p, unsigned char *end, int
      opt, int minsize)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1993,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:1997,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:2002,1
    - Dst: option_find1
      Src: /src/dnsmasq/src/rfc2131.c:2007,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - mess
    - size
    - opt_type
    - minsize
    argTypes:
    - struct dhcp_packet*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 2011
    functionName: option_find
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - option_find1
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *option_find(struct dhcp_packet *mess, size_t size, int
      opt_type, int minsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2019,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:2019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opt
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2013
    functionDepth: 0
    functionLinenumber: 2013
    functionLinenumberEnd: 2022
    functionName: option_addr
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memcpy
    - option_ptr
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr option_addr(unsigned char *opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:2029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - opt
    - offset
    - size
    argTypes:
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2024
    functionDepth: 0
    functionLinenumber: 2024
    functionLinenumberEnd: 2035
    functionName: option_uint
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 2
    functionsReached:
    - option_ptr
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int option_uint(unsigned char *opt, int offset, int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - start
    argTypes:
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 2037
    functionDepth: 0
    functionLinenumber: 2037
    functionLinenumberEnd: 2042
    functionName: dhcp_skip_opts
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *dhcp_skip_opts(unsigned char *start)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - mess
    argTypes:
    - struct dhcp_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2045
    functionDepth: 0
    functionLinenumber: 2045
    functionLinenumberEnd: 2056
    functionName: find_overload
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *find_overload(struct dhcp_packet *mess)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2060,1
    - Dst: memmove
      Src: /src/dnsmasq/src/rfc2131.c:2067,1
    - Dst: memset
      Src: /src/dnsmasq/src/rfc2131.c:2069,1
    - Dst: find_overload
      Src: /src/dnsmasq/src/rfc2131.c:2073,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:2075,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2077,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2078,1
    - Dst: log_options
      Src: /src/dnsmasq/src/rfc2131.c:2079,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2081,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2081,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2082,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2082,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2082,1
    - Dst: option_uint
      Src: /src/dnsmasq/src/rfc2131.c:2084,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2086,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2087,1
    - Dst: log_options
      Src: /src/dnsmasq/src/rfc2131.c:2088,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2090,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2090,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2091,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2091,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2091,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2096,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:2100,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2101,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2101,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2101,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc2131.c:2104,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2105,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2105,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2105,1
    - Dst: log_options
      Src: /src/dnsmasq/src/rfc2131.c:2107,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 3
    argNames:
    - mess
    - agent_id
    - real_end
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2058
    functionDepth: 2
    functionLinenumber: 2058
    functionLinenumberEnd: 2116
    functionName: dhcp_packet_size
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memset
    - dhcp_skip_opts
    - option_bool
    - memmove
    - option_uint
    - log_options
    - my_syslog
    - _
    - find_overload
    - htons
    - ntohl
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: size_t
    signature: size_t dhcp_packet_size(struct dhcp_packet *mess, unsigned char *agent_id,
      unsigned char *real_end)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2120,1
    - Dst: find_overload
      Src: /src/dnsmasq/src/rfc2131.c:2127,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2147,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/src/rfc2131.c:2160,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2168,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2168,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 4
    argNames:
    - mess
    - end
    - opt
    - len
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2118
    functionDepth: 1
    functionLinenumber: 2118
    functionLinenumberEnd: 2178
    functionName: free_space
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - dhcp_skip_opts
    - find_overload
    - my_syslog
    - _
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *free_space(struct dhcp_packet *mess, unsigned char *end,
      int opt, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - mess
    - end
    - opt
    - len
    - val
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - int
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2180
    functionDepth: 2
    functionLinenumber: 2180
    functionLinenumberEnd: 2188
    functionName: option_put
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - free_space
    linkageType: ''
    returnType: void
    signature: void option_put(struct dhcp_packet *mess, unsigned char *end, int opt,
      int len, unsigned int val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2194,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2199,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 5
    argNames:
    - mess
    - end
    - opt
    - string
    - null_term
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2190
    functionDepth: 2
    functionLinenumber: 2190
    functionLinenumberEnd: 2201
    functionName: option_put_string
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memcpy
    - strlen
    - free_space
    linkageType: ''
    returnType: void
    signature: "void option_put_string(struct dhcp_packet *mess, unsigned char *end,
      int opt, \n\t\t\t      const char *string, int null_term)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2221,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2223,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2229,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 4
    argNames:
    - opt
    - p
    - context
    - null_term
    argTypes:
    - struct dhcp_opt*
    - unsigned char*
    - struct dhcp_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2232
      start: 2204
    functionDepth: 0
    functionLinenumber: 2204
    functionLinenumberEnd: 2232
    functionName: do_opt
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int do_opt(struct dhcp_opt *opt, unsigned char *p, struct dhcp_context
      *context, int null_term)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - list
    - opt
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2234
    functionDepth: 0
    functionLinenumber: 2234
    functionLinenumberEnd: 2247
    functionName: in_list
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_list(unsigned char *list, int opt)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - opt
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2258
      start: 2249
    functionDepth: 0
    functionLinenumber: 2249
    functionLinenumberEnd: 2258
    functionName: option_find2
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct dhcp_opt
    signature: struct dhcp_opt *option_find2(int opt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2282,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:2283,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc2131.c:2284,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:2284,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 2
    argNames:
    - opt
    - dopt
    argTypes:
    - unsigned char*
    - struct dhcp_opt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2262
    functionDepth: 0
    functionLinenumber: 2262
    functionLinenumberEnd: 2297
    functionName: match_vendor_opts
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memcmp
    - strlen
    - option_ptr
    - option_len
    linkageType: ''
    returnType: void
    signature: void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2310,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2316,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2320,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2331,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2336,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 6
    argNames:
    - opt
    - encap
    - flag
    - mess
    - end
    - null_term
    argTypes:
    - struct dhcp_opt*
    - int
    - int
    - struct dhcp_packet*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2299
    functionDepth: 2
    functionLinenumber: 2299
    functionLinenumberEnd: 2345
    functionName: do_encap_opts
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - do_opt
    - free_space
    linkageType: ''
    returnType: int
    signature: "int do_encap_opts(struct dhcp_opt *opt, int encap, int flag,  \n\t\t\t
      struct dhcp_packet *mess, unsigned char *end, int null_term)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:2353,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2354,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - mess
    - end
    - uuid
    - pxevendor
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - unsigned char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2347
    functionDepth: 2
    functionLinenumber: 2347
    functionLinenumberEnd: 2356
    functionName: pxe_misc
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memcpy
    - option_put_string
    - free_space
    linkageType: ''
    returnType: void
    signature: void pxe_misc(struct dhcp_packet *mess, unsigned char *end, unsigned
      char *uuid, const char *pxevendor)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2367,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - netid
    argTypes:
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2373
      start: 2358
    functionDepth: 1
    functionLinenumber: 2358
    functionLinenumberEnd: 2373
    functionName: prune_vendor_opts
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - match_netid
    linkageType: ''
    returnType: int
    signature: int prune_vendor_opts(struct dhcp_netid *netid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2390,1
    - Dst: a_record_from_hosts
      Src: /src/dnsmasq/src/rfc2131.c:2406,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc2131.c:2407,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc2131.c:2416,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc2131.c:2420,1
    - Dst: strchr
      Src: /src/dnsmasq/src/rfc2131.c:2421,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 6
    argNames:
    - pxe_arch
    - netid
    - mess
    - local
    - now
    - pxe
    argTypes:
    - int
    - struct dhcp_netid*
    - struct dhcp_packet*
    - struct in_addr
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2424
      start: 2381
    functionDepth: 1
    functionLinenumber: 2381
    functionLinenumberEnd: 2424
    functionName: pxe_uefi_workaround
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - snprintf
    - match_netid
    - strchr
    - a_record_from_hosts
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: int pxe_uefi_workaround(int pxe_arch, struct dhcp_netid *netid, struct
      dhcp_packet *mess, struct in_addr local, time_t now, int pxe)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/rfc2131.c:2447,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2462,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2464,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2472,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2479,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2479,1
    - Dst: a_record_from_hosts
      Src: /src/dnsmasq/src/rfc2131.c:2484,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2496,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 4
    argNames:
    - pxe_arch
    - netid
    - local
    - now
    argTypes:
    - int
    - struct dhcp_netid*
    - struct in_addr
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2544
      start: 2426
    functionDepth: 1
    functionLinenumber: 2426
    functionLinenumberEnd: 2544
    functionName: pxe_opts
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - whine_malloc
    - my_syslog
    - memcpy
    - match_netid
    - _
    - a_record_from_hosts
    - strlen
    linkageType: ''
    returnType: struct dhcp_opt
    signature: struct dhcp_opt *pxe_opts(int pxe_arch, struct dhcp_netid *netid, struct
      in_addr local, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/rfc2131.c:2548,1
    - Dst: memset
      Src: /src/dnsmasq/src/rfc2131.c:2549,1
    - Dst: memset
      Src: /src/dnsmasq/src/rfc2131.c:2550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mess
    - end
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2552
      start: 2546
    functionDepth: 0
    functionLinenumber: 2546
    functionLinenumberEnd: 2552
    functionName: clear_packet
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void clear_packet(struct dhcp_packet *mess, unsigned char *end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2560,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2565,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - netid
    argTypes:
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2569
      start: 2554
    functionDepth: 1
    functionLinenumber: 2554
    functionLinenumberEnd: 2569
    functionName: find_boot
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - match_netid
    linkageType: ''
    returnType: struct dhcp_boot
    signature: struct dhcp_boot *find_boot(struct dhcp_netid *netid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_find
      Src: /src/dnsmasq/src/rfc2131.c:2576,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2581,1
    - Dst: option_len
      Src: /src/dnsmasq/src/rfc2131.c:2582,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/rfc2131.c:2584,1
    - Dst: option_ptr
      Src: /src/dnsmasq/src/rfc2131.c:2584,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - mess
    - sz
    - pxe_vendor
    argTypes:
    - struct dhcp_packet*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2571
    functionDepth: 0
    functionLinenumber: 2571
    functionLinenumberEnd: 2592
    functionName: is_pxe_client
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - option_ptr
    - strncmp
    - option_len
    - strlen
    - option_find
    linkageType: ''
    returnType: int
    signature: int is_pxe_client(struct dhcp_packet *mess, size_t sz, const char **pxe_vendor)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: option_filter
      Src: /src/dnsmasq/src/rfc2131.c:2625,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2628,1
    - Dst: option_string
      Src: /src/dnsmasq/src/rfc2131.c:2633,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc2131.c:2634,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2637,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:2643,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:2643,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2643,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2651,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc2131.c:2654,1
    - Dst: find_boot
      Src: /src/dnsmasq/src/rfc2131.c:2665,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2669,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2671,1
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:2672,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:2674,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2679,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2681,1
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:2682,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:2684,1
    - Dst: a_record_from_hosts
      Src: /src/dnsmasq/src/rfc2131.c:2690,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2698,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2699,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:2701,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2705,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2706,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/rfc2131.c:2708,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2712,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2721,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2736,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2736,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2745,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2747,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2752,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2754,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2769,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2770,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2777,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2778,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2779,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2779,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2784,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2785,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2786,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2786,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2791,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2792,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2793,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2793,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2796,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2797,1
    - Dst: option_put
      Src: /src/dnsmasq/src/rfc2131.c:2798,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:2798,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2801,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2802,1
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:2803,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2808,1
    - Dst: option_find2
      Src: /src/dnsmasq/src/rfc2131.c:2809,1
    - Dst: option_put_string
      Src: /src/dnsmasq/src/rfc2131.c:2810,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2814,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2822,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2826,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc2131.c:2834,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc2131.c:2837,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2843,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2843,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2844,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2848,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2848,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc2131.c:2849,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2867,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2903,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2906,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2908,1
    - Dst: match_vendor_opts
      Src: /src/dnsmasq/src/rfc2131.c:2915,1
    - Dst: handle_encap
      Src: /src/dnsmasq/src/rfc2131.c:2922,1
    - Dst: prune_vendor_opts
      Src: /src/dnsmasq/src/rfc2131.c:2924,1
    - Dst: pxe_misc
      Src: /src/dnsmasq/src/rfc2131.c:2928,1
    - Dst: pxe_uefi_workaround
      Src: /src/dnsmasq/src/rfc2131.c:2929,1
    - Dst: pxe_opts
      Src: /src/dnsmasq/src/rfc2131.c:2930,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2933,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2933,1
    - Dst: do_encap_opts
      Src: /src/dnsmasq/src/rfc2131.c:2934,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:2936,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:2939,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:2942,1
    CyclomaticComplexity: 129
    EdgeCount: 129
    ICount: 165
    argCount: 18
    argNames:
    - context
    - mess
    - end
    - req_options
    - hostname
    - domain
    - netid
    - subnet_addr
    - fqdn_flags
    - null_term
    - pxe_arch
    - uuid
    - vendor_class_len
    - now
    - lease_time
    - fuzz
    - pxevendor
    - leasequery
    argTypes:
    - struct dhcp_context*
    - struct dhcp_packet*
    - unsigned char*
    - unsigned char*
    - char*
    - char*
    - struct dhcp_netid*
    - struct in_addr
    - unsigned char
    - int
    - int
    - unsigned char*
    - int
    - time_t
    - unsigned int
    - unsigned short
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2947
      start: 2594
    functionDepth: 3
    functionLinenumber: 2594
    functionLinenumberEnd: 2947
    functionName: do_options
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - free_space
    - pxe_opts
    - option_string
    - safe_strncpy
    - find_boot
    - in_list
    - strlen
    - option_find2
    - do_rfc1035_name
    - handle_encap
    - do_opt
    - match_vendor_opts
    - htons
    - memcpy
    - pxe_misc
    - option_bool
    - snprintf
    - option_put
    - my_syslog
    - _
    - match_netid
    - do_encap_opts
    - a_record_from_hosts
    - option_put_string
    - pxe_uefi_workaround
    - option_filter
    - prune_vendor_opts
    - ntohl
    linkageType: ''
    returnType: void
    signature: "void do_options(struct dhcp_context *context,\n\t\t       struct dhcp_packet
      *mess,\n\t\t       unsigned char *end, \n\t\t       unsigned char *req_options,\n\t\t
      \      char *hostname, \n\t\t       char *domain,\n\t\t       struct dhcp_netid
      *netid,\n\t\t       struct in_addr subnet_addr,\n\t\t       unsigned char fqdn_flags,\n\t\t
      \      int null_term, int pxe_arch,\n\t\t       unsigned char *uuid,\n\t\t       int
      vendor_class_len,\n\t\t       time_t now,\n\t\t       unsigned int lease_time,\n\t\t
      \      unsigned short fuzz,\n\t\t       const char *pxevendor,\n\t\t       int
      leasequery)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:2988,1
    - Dst: pxe_ok
      Src: /src/dnsmasq/src/rfc2131.c:2989,1
    - Dst: in_list
      Src: /src/dnsmasq/src/rfc2131.c:2990,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:2994,1
    - Dst: do_encap_opts
      Src: /src/dnsmasq/src/rfc2131.c:3001,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:3003,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:3003,1
    - Dst: free_space
      Src: /src/dnsmasq/src/rfc2131.c:3004,1
    - Dst: htonl
      Src: /src/dnsmasq/src/rfc2131.c:3006,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc2131.c:3007,1
    - Dst: do_opt
      Src: /src/dnsmasq/src/rfc2131.c:3013,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 38
    argCount: 6
    argNames:
    - mess
    - end
    - req_options
    - null_term
    - tagif
    - pxemode
    argTypes:
    - struct dhcp_packet*
    - unsigned char*
    - unsigned char*
    - int
    - struct dhcp_netid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3022
      start: 2949
    functionDepth: 3
    functionLinenumber: 2949
    functionLinenumberEnd: 3022
    functionName: handle_encap
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 2
    functionsReached:
    - pxe_ok
    - free_space
    - my_syslog
    - match_netid
    - in_list
    - do_opt
    - _
    - do_encap_opts
    - htonl
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void handle_encap(struct dhcp_packet *mess, unsigned char *end, unsigned
      char *req_options,\n\t\t\t int null_term, struct dhcp_netid *tagif, int pxemode)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:3030,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc2131.c:3036,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc2131.c:3041,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc2131.c:3042,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc2131.c:3042,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/rfc2131.c:3042,1
    - Dst: delay_dhcp
      Src: /src/dnsmasq/src/rfc2131.c:3043,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 3
    argNames:
    - xid
    - recvtime
    - netid
    argTypes:
    - u32
    - time_t
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3045
      start: 3024
    functionDepth: 1
    functionLinenumber: 3024
    functionLinenumberEnd: 3045
    functionName: apply_delay
    functionSourceFile: /src/dnsmasq/src/rfc2131.c
    functionUses: 1
    functionsReached:
    - option_bool
    - my_syslog
    - delay_dhcp
    - _
    - match_netid
    - ntohl
    linkageType: ''
    returnType: void
    signature: void apply_delay(u32 xid, time_t recvtime, struct dhcp_netid *netid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dbus.c:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - watch
    - data
    argTypes:
    - DBusWatch*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 135
    functionName: add_watch
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - whine_malloc
    linkageType: ''
    returnType: dbus_bool_t
    signature: dbus_bool_t add_watch(DBusWatch *watch, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/dbus.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - watch
    - data
    argTypes:
    - DBusWatch*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 155
    functionName: remove_watch
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void remove_watch(DBusWatch *watch, void *data)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_iter_init
      Src: /src/dnsmasq/src/dbus.c:163,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:165,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/dbus.c:169,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:175,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:179,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:180,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dbus.c:185,1
    - Dst: htons
      Src: /src/dnsmasq/src/dbus.c:187,1
    - Dst: htons
      Src: /src/dnsmasq/src/dbus.c:189,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:191,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:200,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:201,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:202,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dbus.c:211,1
    - Dst: htons
      Src: /src/dnsmasq/src/dbus.c:216,1
    - Dst: htons
      Src: /src/dnsmasq/src/dbus.c:220,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:230,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:232,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:233,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/dbus.c:239,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:241,1
    - Dst: cleanup_servers
      Src: /src/dnsmasq/src/dbus.c:245,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 247
    functionName: dbus_read_servers
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_next
    - dbus_message_iter_get_basic
    - dbus_message_new_error
    - cleanup_servers
    - mark_servers
    - add_update_server
    - dbus_message_iter_init
    - htons
    - ntohl
    - memcpy
    - dbus_message_iter_get_arg_type
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage * dbus_read_servers(DBusMessage *message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:254,1
    - Dst: dbus_message_iter_init_append
      Src: /src/dnsmasq/src/dbus.c:256,1
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:257,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/dbus.c:262,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:263,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 269
    functionName: dbus_reply_server_loop
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_close_container
    - dbus_message_iter_open_container
    - dbus_message_iter_init_append
    - dbus_message_new_method_return
    - dbus_message_iter_append_basic
    - prettyprint_addr
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_reply_server_loop(DBusMessage *message)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_iter_init
      Src: /src/dnsmasq/src/dbus.c:279,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:281,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:286,1
    - Dst: dbus_message_iter_get_element_type
      Src: /src/dnsmasq/src/dbus.c:287,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:289,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/dbus.c:293,1
    - Dst: dbus_message_iter_recurse
      Src: /src/dnsmasq/src/dbus.c:296,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:297,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:312,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:313,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:315,1
    - Dst: free
      Src: /src/dnsmasq/src/dbus.c:322,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dbus.c:323,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:323,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dbus.c:326,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/dbus.c:329,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/dbus.c:332,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:336,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:356,1
    - Dst: dbus_message_iter_get_element_type
      Src: /src/dnsmasq/src/dbus.c:357,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:359,1
    - Dst: dbus_message_iter_recurse
      Src: /src/dnsmasq/src/dbus.c:365,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:366,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:369,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:374,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:375,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:377,1
    - Dst: free
      Src: /src/dnsmasq/src/dbus.c:384,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dbus.c:385,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:385,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dbus.c:388,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dbus.c:398,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:404,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/dbus.c:405,1
    - Dst: parse_server
      Src: /src/dnsmasq/src/dbus.c:408,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:410,1
    - Dst: parse_server_next
      Src: /src/dnsmasq/src/dbus.c:416,1
    - Dst: parse_server_addr
      Src: /src/dnsmasq/src/dbus.c:418,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:420,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/dbus.c:426,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:434,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:439,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:440,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:441,1
    - Dst: parse_server
      Src: /src/dnsmasq/src/dbus.c:443,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:445,1
    - Dst: parse_server_next
      Src: /src/dnsmasq/src/dbus.c:451,1
    - Dst: parse_server_addr
      Src: /src/dnsmasq/src/dbus.c:453,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:455,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/dbus.c:468,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:470,1
    - Dst: freeaddrinfo
      Src: /src/dnsmasq/src/dbus.c:474,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:477,1
    - Dst: cleanup_servers
      Src: /src/dnsmasq/src/dbus.c:480,1
    - Dst: free
      Src: /src/dnsmasq/src/dbus.c:483,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 112
    argCount: 2
    argNames:
    - message
    - strings
    argTypes:
    - DBusMessage*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 486
    functionName: dbus_read_servers_ex
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - add_update_server
    - parse_server_next
    - strlen
    - dbus_message_iter_recurse
    - whine_malloc
    - parse_server
    - freeaddrinfo
    - dbus_message_iter_get_arg_type
    - parse_server_addr
    - mark_servers
    - free
    - strrchr
    - dbus_message_iter_next
    - strcpy
    - dbus_message_iter_get_element_type
    - dbus_message_new_error
    - dbus_message_iter_get_basic
    - dbus_message_iter_init
    - dbus_message_new_error_printf
    - strchr
    - cleanup_servers
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage * dbus_read_servers_ex(DBusMessage *message, int strings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_iter_init
      Src: /src/dnsmasq/src/dbus.c:492,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:492,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:493,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:495,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dbus.c:498,1
    - Dst: _
      Src: /src/dnsmasq/src/dbus.c:498,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dbus.c:500,1
    - Dst: _
      Src: /src/dnsmasq/src/dbus.c:500,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - message
    - enabled
    - name
    argTypes:
    - DBusMessage*
    - dbus_bool_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 503
    functionName: dbus_get_bool
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_get_basic
    - dbus_message_new_error
    - my_syslog
    - dbus_message_iter_init
    - _
    - dbus_message_iter_get_arg_type
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_get_bool(DBusMessage *message, dbus_bool_t *enabled,
      char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbus_get_bool
      Src: /src/dnsmasq/src/dbus.c:508,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/dbus.c:513,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/dbus.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - message
    - flag
    - name
    argTypes:
    - DBusMessage*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 505
    functionDepth: 2
    functionLinenumber: 505
    functionLinenumberEnd: 519
    functionName: dbus_set_bool
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - reset_option_bool
    - set_option_bool
    - dbus_get_bool
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_set_bool(DBusMessage *message, int flag, char *name)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dbus.c:531,1
    - Dst: dbus_message_iter_init
      Src: /src/dnsmasq/src/dbus.c:535,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:536,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:539,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:540,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:543,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:544,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:546,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:547,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:550,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:551,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:553,1
    - Dst: dbus_message_iter_get_element_type
      Src: /src/dnsmasq/src/dbus.c:554,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:555,1
    - Dst: dbus_message_iter_recurse
      Src: /src/dnsmasq/src/dbus.c:558,1
    - Dst: dbus_message_iter_get_fixed_array
      Src: /src/dnsmasq/src/dbus.c:559,1
    - Dst: memchr
      Src: /src/dnsmasq/src/dbus.c:560,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:566,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:569,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:571,1
    - Dst: dbus_message_iter_get_element_type
      Src: /src/dnsmasq/src/dbus.c:572,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:573,1
    - Dst: dbus_message_iter_recurse
      Src: /src/dnsmasq/src/dbus.c:576,1
    - Dst: dbus_message_iter_get_fixed_array
      Src: /src/dnsmasq/src/dbus.c:577,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:578,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:580,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:581,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:584,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:585,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:587,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:588,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:591,1
    - Dst: dbus_message_iter_next
      Src: /src/dnsmasq/src/dbus.c:592,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:594,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:595,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:598,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dbus.c:600,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:603,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/dbus.c:606,1
    - Dst: lease4_allocate
      Src: /src/dnsmasq/src/dbus.c:607,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dbus.c:610,1
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/dbus.c:612,1
    - Dst: lease6_allocate
      Src: /src/dnsmasq/src/dbus.c:613,1
    - Dst: lease_set_iaid
      Src: /src/dnsmasq/src/dbus.c:615,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/dbus.c:622,1
    - Dst: dbus_message_new_error_printf
      Src: /src/dnsmasq/src/dbus.c:624,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/dbus.c:630,1
    - Dst: lease_set_expires
      Src: /src/dnsmasq/src/dbus.c:632,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/dbus.c:634,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/dbus.c:634,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dbus.c:636,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dbus.c:637,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 60
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 522
    functionDepth: 5
    functionLinenumber: 522
    functionLinenumberEnd: 640
    functionName: dbus_add_lease
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - lease6_find_by_addr
    - lease_update_dns
    - lease_update_file
    - dbus_message_iter_recurse
    - inet_pton
    - lease_set_hostname
    - parse_hex
    - dbus_message_iter_get_arg_type
    - lease6_allocate
    - lease4_allocate
    - dbus_message_iter_get_fixed_array
    - dnsmasq_time
    - get_domain
    - lease_set_expires
    - dbus_message_iter_next
    - memchr
    - dbus_message_iter_get_basic
    - dbus_message_new_error
    - dbus_message_iter_get_element_type
    - lease_set_hwaddr
    - lease_find_by_addr
    - dbus_message_iter_init
    - dbus_message_new_error_printf
    - lease_set_iaid
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_add_lease(DBusMessage* message)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dbus.c:650,1
    - Dst: dbus_message_iter_init
      Src: /src/dnsmasq/src/dbus.c:652,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:653,1
    - Dst: dbus_message_iter_get_arg_type
      Src: /src/dnsmasq/src/dbus.c:656,1
    - Dst: dbus_message_new_error
      Src: /src/dnsmasq/src/dbus.c:657,1
    - Dst: dbus_message_iter_get_basic
      Src: /src/dnsmasq/src/dbus.c:660,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dbus.c:662,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/dbus.c:663,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dbus.c:665,1
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/dbus.c:666,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/dbus.c:674,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dbus.c:675,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dbus.c:676,1
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:681,1
    - Dst: dbus_message_append_args
      Src: /src/dnsmasq/src/dbus.c:682,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 642
    functionDepth: 5
    functionLinenumber: 642
    functionLinenumberEnd: 687
    functionName: dbus_del_lease
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_get_basic
    - dbus_message_new_error
    - lease_prune
    - inet_pton
    - lease_find_by_addr
    - dbus_message_new_method_return
    - lease6_find_by_addr
    - lease_update_dns
    - dbus_message_iter_init
    - dbus_message_append_args
    - dnsmasq_time
    - dbus_message_iter_get_arg_type
    - lease_update_file
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_del_lease(DBusMessage* message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:692,1
    - Dst: dbus_message_iter_init_append
      Src: /src/dnsmasq/src/dbus.c:696,1
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:697,1
    - Dst: get_metric_name
      Src: /src/dnsmasq/src/dbus.c:700,1
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:703,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:704,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:705,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:706,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 712
    functionName: dbus_get_metrics
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - get_metric_name
    - dbus_message_iter_close_container
    - dbus_message_iter_open_container
    - dbus_message_iter_init_append
    - dbus_message_new_method_return
    - dbus_message_iter_append_basic
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_get_metrics(DBusMessage* message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:718,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:719,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:720,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - container
    - key
    - val
    argTypes:
    - DBusMessageIter*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 722
    functionName: add_dict_entry
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_append_basic
    - dbus_message_iter_close_container
    - dbus_message_iter_open_container
    linkageType: ''
    returnType: void
    signature: void add_dict_entry(DBusMessageIter *container, const char *key, const
      char *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/dnsmasq/src/dbus.c:726,1
    - Dst: add_dict_entry
      Src: /src/dnsmasq/src/dbus.c:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - container
    - key
    - val
    argTypes:
    - DBusMessageIter*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 729
    functionName: add_dict_int
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - add_dict_entry
    - snprintf
    linkageType: ''
    returnType: void
    signature: void add_dict_int(DBusMessageIter *container, const char *key, const
      unsigned int val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:733,1
    - Dst: dbus_message_iter_init_append
      Src: /src/dnsmasq/src/dbus.c:737,1
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:738,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/dbus.c:754,1
    - Dst: dbus_message_iter_open_container
      Src: /src/dnsmasq/src/dbus.c:765,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/dbus.c:767,1
    - Dst: add_dict_entry
      Src: /src/dnsmasq/src/dbus.c:768,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:770,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:771,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:772,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:773,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:774,1
    - Dst: add_dict_int
      Src: /src/dnsmasq/src/dbus.c:775,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:777,1
    - Dst: dbus_message_iter_close_container
      Src: /src/dnsmasq/src/dbus.c:780,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - message
    argTypes:
    - DBusMessage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 783
    functionName: dbus_get_server_metrics
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_message_iter_close_container
    - dbus_message_iter_open_container
    - dbus_message_iter_init_append
    - dbus_message_new_method_return
    - add_dict_int
    - add_dict_entry
    - sockaddr_isequal
    - prettyprint_addr
    linkageType: ''
    returnType: DBusMessage
    signature: DBusMessage *dbus_get_server_metrics(DBusMessage* message)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: dbus_message_get_member
      Src: /src/dnsmasq/src/dbus.c:789,1
    - Dst: dbus_message_is_method_call
      Src: /src/dnsmasq/src/dbus.c:793,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dbus.c:797,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:797,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dbus.c:797,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dbus.c:798,1
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:802,1
    - Dst: dbus_message_append_args
      Src: /src/dnsmasq/src/dbus.c:803,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:806,1
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:809,1
    - Dst: dbus_message_append_args
      Src: /src/dnsmasq/src/dbus.c:811,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:814,1
    - Dst: dbus_reply_server_loop
      Src: /src/dnsmasq/src/dbus.c:816,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:819,1
    - Dst: dbus_read_servers
      Src: /src/dnsmasq/src/dbus.c:821,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:824,1
    - Dst: dbus_read_servers_ex
      Src: /src/dnsmasq/src/dbus.c:826,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:829,1
    - Dst: dbus_read_servers_ex
      Src: /src/dnsmasq/src/dbus.c:831,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:834,1
    - Dst: dbus_set_bool
      Src: /src/dnsmasq/src/dbus.c:836,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:838,1
    - Dst: dbus_get_bool
      Src: /src/dnsmasq/src/dbus.c:844,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:856,1
    - Dst: dbus_get_bool
      Src: /src/dnsmasq/src/dbus.c:862,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:874,1
    - Dst: dbus_set_bool
      Src: /src/dnsmasq/src/dbus.c:876,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:878,1
    - Dst: dbus_set_bool
      Src: /src/dnsmasq/src/dbus.c:880,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:883,1
    - Dst: dbus_add_lease
      Src: /src/dnsmasq/src/dbus.c:885,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:887,1
    - Dst: dbus_del_lease
      Src: /src/dnsmasq/src/dbus.c:889,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:892,1
    - Dst: dbus_get_metrics
      Src: /src/dnsmasq/src/dbus.c:894,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:896,1
    - Dst: dbus_get_server_metrics
      Src: /src/dnsmasq/src/dbus.c:898,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:900,1
    - Dst: clear_metrics
      Src: /src/dnsmasq/src/dbus.c:902,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dbus.c:904,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dbus.c:911,1
    - Dst: _
      Src: /src/dnsmasq/src/dbus.c:911,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/dbus.c:912,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dbus.c:913,1
    - Dst: clear_cache_and_reload
      Src: /src/dnsmasq/src/dbus.c:918,1
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dbus.c:918,1
    - Dst: dbus_message_new_method_return
      Src: /src/dnsmasq/src/dbus.c:924,1
    - Dst: dbus_connection_send
      Src: /src/dnsmasq/src/dbus.c:928,1
    - Dst: dbus_message_unref
      Src: /src/dnsmasq/src/dbus.c:929,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 75
    argCount: 3
    argNames:
    - connection
    - message
    - user_data
    argTypes:
    - DBusConnection*
    - DBusMessage*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 785
    functionDepth: 6
    functionLinenumber: 785
    functionLinenumberEnd: 933
    functionName: message_handler
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_add_lease
    - dbus_message_new_method_return
    - dbus_read_servers
    - clear_metrics
    - check_servers
    - strlen
    - dbus_get_server_metrics
    - dbus_get_bool
    - dbus_set_bool
    - sprintf
    - whine_malloc
    - strcmp
    - dbus_connection_send
    - dbus_read_servers_ex
    - dbus_get_metrics
    - option_bool
    - dbus_del_lease
    - my_syslog
    - _
    - dbus_message_append_args
    - dnsmasq_time
    - dbus_message_is_method_call
    - clear_cache_and_reload
    - dbus_message_unref
    - dbus_reply_server_loop
    - dbus_message_get_member
    linkageType: ''
    returnType: DBusHandlerResult
    signature: "DBusHandlerResult message_handler(DBusConnection *connection, \n\t\t\t\t
      \ DBusMessage *message, \n\t\t\t\t  void *user_data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dbus_error_init
      Src: /src/dnsmasq/src/dbus.c:944,1
    - Dst: dbus_bus_get
      Src: /src/dnsmasq/src/dbus.c:945,1
    - Dst: dbus_error_free
      Src: /src/dnsmasq/src/dbus.c:947,1
    - Dst: dbus_connection_set_exit_on_disconnect
      Src: /src/dnsmasq/src/dbus.c:951,1
    - Dst: dbus_connection_set_watch_functions
      Src: /src/dnsmasq/src/dbus.c:952,1
    - Dst: dbus_error_init
      Src: /src/dnsmasq/src/dbus.c:954,1
    - Dst: dbus_bus_request_name
      Src: /src/dnsmasq/src/dbus.c:955,1
    - Dst: dbus_error_is_set
      Src: /src/dnsmasq/src/dbus.c:956,1
    - Dst: dbus_connection_register_object_path
      Src: /src/dnsmasq/src/dbus.c:959,1
    - Dst: _
      Src: /src/dnsmasq/src/dbus.c:961,1
    - Dst: dbus_message_new_signal
      Src: /src/dnsmasq/src/dbus.c:965,1
    - Dst: dbus_connection_send
      Src: /src/dnsmasq/src/dbus.c:967,1
    - Dst: dbus_message_unref
      Src: /src/dnsmasq/src/dbus.c:968,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 972
    functionName: dbus_init
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_error_free
    - dbus_message_new_signal
    - dbus_bus_get
    - dbus_connection_set_watch_functions
    - dbus_bus_request_name
    - dbus_connection_register_object_path
    - dbus_connection_set_exit_on_disconnect
    - _
    - dbus_message_unref
    - dbus_error_is_set
    - dbus_connection_send
    - dbus_error_init
    linkageType: ''
    returnType: char
    signature: char *dbus_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dbus_watch_get_enabled
      Src: /src/dnsmasq/src/dbus.c:980,1
    - Dst: dbus_watch_get_flags
      Src: /src/dnsmasq/src/dbus.c:982,1
    - Dst: dbus_watch_get_unix_fd
      Src: /src/dnsmasq/src/dbus.c:983,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dbus.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 993
    functionName: set_dbus_listeners
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - poll_listen
    - dbus_watch_get_enabled
    - dbus_watch_get_unix_fd
    - dbus_watch_get_flags
    linkageType: ''
    returnType: void
    signature: void set_dbus_listeners(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dbus_watch_get_enabled
      Src: /src/dnsmasq/src/dbus.c:1001,1
    - Dst: dbus_watch_get_unix_fd
      Src: /src/dnsmasq/src/dbus.c:1004,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dbus.c:1005,1
    - Dst: dbus_watch_handle
      Src: /src/dnsmasq/src/dbus.c:1016,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 995
    functionDepth: 1
    functionLinenumber: 995
    functionLinenumberEnd: 1023
    functionName: check_dbus_watches
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - dbus_watch_handle
    - dbus_watch_get_enabled
    - dbus_watch_get_unix_fd
    - poll_check
    linkageType: ''
    returnType: int
    signature: int check_dbus_watches()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_dbus_watches
      Src: /src/dnsmasq/src/dbus.c:1029,1
    - Dst: dbus_connection_ref
      Src: /src/dnsmasq/src/dbus.c:1033,1
    - Dst: dbus_connection_dispatch
      Src: /src/dnsmasq/src/dbus.c:1034,1
    - Dst: dbus_connection_unref
      Src: /src/dnsmasq/src/dbus.c:1035,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1025
    functionDepth: 2
    functionLinenumber: 1025
    functionLinenumberEnd: 1037
    functionName: check_dbus_listeners
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 0
    functionsReached:
    - check_dbus_watches
    - dbus_connection_dispatch
    - dbus_connection_ref
    - dbus_connection_unref
    linkageType: ''
    returnType: void
    signature: void check_dbus_listeners()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: print_mac
      Src: /src/dnsmasq/src/dbus.c:1058,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dbus.c:1059,1
    - Dst: extended_hwaddr
      Src: /src/dnsmasq/src/dbus.c:1064,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/dbus.c:1066,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dbus.c:1067,1
    - Dst: dbus_message_new_signal
      Src: /src/dnsmasq/src/dbus.c:1079,1
    - Dst: dbus_message_iter_init_append
      Src: /src/dnsmasq/src/dbus.c:1082,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:1084,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:1085,1
    - Dst: dbus_message_iter_append_basic
      Src: /src/dnsmasq/src/dbus.c:1086,1
    - Dst: dbus_connection_send
      Src: /src/dnsmasq/src/dbus.c:1087,1
    - Dst: dbus_message_unref
      Src: /src/dnsmasq/src/dbus.c:1089,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 3
    argNames:
    - action
    - lease
    - hostname
    argTypes:
    - int
    - struct dhcp_lease*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1090
    functionName: emit_dbus_signal
    functionSourceFile: /src/dnsmasq/src/dbus.c
    functionUses: 1
    functionsReached:
    - dbus_message_new_signal
    - dbus_message_iter_init_append
    - print_mac
    - dbus_message_unref
    - dbus_message_iter_append_basic
    - extended_hwaddr
    - dbus_connection_send
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: make_fd
      Src: /src/dnsmasq/src/dhcp.c:110,1
    - Dst: make_fd
      Src: /src/dnsmasq/src/dhcp.c:112,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:121,1
    - Dst: make_icmp_sock
      Src: /src/dnsmasq/src/dhcp.c:123,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp.c:124,1
    - Dst: die
      Src: /src/dnsmasq/src/dhcp.c:125,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:125,1
    - Dst: init_bpf
      Src: /src/dnsmasq/src/dhcp.c:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 130
    functionName: dhcp_init
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 0
    functionsReached:
    - make_fd
    - option_bool
    - die
    - init_bpf
    - _
    - make_icmp_sock
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void dhcp_init(void)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/dhcp.c:159,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/dhcp.c:161,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/dhcp.c:163,1
    - Dst: recv_dhcp_packet
      Src: /src/dnsmasq/src/dhcp.c:175,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp.c:180,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:184,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/dhcp.c:188,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/dhcp.c:188,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/dhcp.c:195,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/dhcp.c:203,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/dhcp.c:203,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/dhcp.c:210,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/dhcp.c:216,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/dhcp.c:216,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/dhcp.c:223,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dhcp.c:228,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:229,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/dhcp.c:251,1
    - Dst: wildcard_matchn
      Src: /src/dnsmasq/src/dhcp.c:263,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/dhcp.c:265,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:267,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:268,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/dhcp.c:274,1
    - Dst: relay_reply4
      Src: /src/dnsmasq/src/dhcp.c:289,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dhcp.c:293,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/dhcp.c:298,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:304,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/dhcp.c:308,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:309,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:309,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp.c:314,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/dhcp.c:324,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/dhcp.c:334,1
    - Dst: complete_context
      Src: /src/dnsmasq/src/dhcp.c:341,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/dhcp.c:344,1
    - Dst: relay_upstream4
      Src: /src/dnsmasq/src/dhcp.c:347,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/dhcp.c:353,1
    - Dst: dhcp_reply
      Src: /src/dnsmasq/src/dhcp.c:354,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dhcp.c:357,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dhcp.c:358,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:392,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:404,1
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp.c:417,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/dhcp.c:419,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/dhcp.c:420,1
    - Dst: CMSG_SPACE
      Src: /src/dnsmasq/src/dhcp.c:423,1
    - Dst: CMSG_LEN
      Src: /src/dnsmasq/src/dhcp.c:424,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dhcp.c:428,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:433,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:440,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp.c:441,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp.c:443,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:446,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:447,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:447,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dhcp.c:447,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dhcp.c:451,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:455,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:467,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp.c:470,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:472,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dhcp.c:478,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:482,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp.c:484,1
    - Dst: send_via_bpf
      Src: /src/dnsmasq/src/dhcp.c:488,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp.c:494,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp.c:498,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dhcp.c:502,1
    - Dst: sendmsg
      Src: /src/dnsmasq/src/dhcp.c:502,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:507,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:508,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:508,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dhcp.c:509,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 172
    argCount: 2
    argNames:
    - now
    - pxe_fd
    argTypes:
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 132
    functionDepth: 5
    functionLinenumber: 132
    functionLinenumberEnd: 511
    functionName: dhcp_packet
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 4
    functionsReached:
    - safe_strncpy
    - ntohs
    - CMSG_DATA
    - lease_update_dns
    - iface_check
    - strerror
    - retry_send
    - dump_packet_udp
    - lease_prune
    - lease_update_file
    - setsockopt
    - sendmsg
    - iface_enumerate
    - CMSG_FIRSTHDR
    - recv_dhcp_packet
    - htons
    - memcpy
    - wildcard_match
    - ioctl
    - CMSG_NXTHDR
    - my_syslog
    - _
    - CMSG_LEN
    - inet_ntop
    - if_nametoindex
    - relay_upstream4
    - memset
    - dhcp_reply
    - complete_context
    - send_via_bpf
    - indextoname
    - relay_reply4
    - CMSG_SPACE
    - wildcard_matchn
    linkageType: ''
    returnType: void
    signature: void dhcp_packet(time_t now, int pxe_fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 6
    argNames:
    - local
    - if_index
    - label
    - netmask
    - broadcast
    - vparam
    argTypes:
    - struct in_addr
    - int
    - char*
    - struct in_addr
    - struct in_addr
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 537
    functionName: check_listen_addrs
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int check_listen_addrs(struct in_addr local, int if_index, char *label,\n\t\t\t
      \     struct in_addr netmask, struct in_addr broadcast, void *vparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:555,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:556,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:559,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:560,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:562,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:563,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:564,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:565,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:565,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - addr
    - netmask
    argTypes:
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 570
    functionName: guess_range_netmask
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 0
    functionsReached:
    - is_same_net
    - my_syslog
    - _
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void guess_range_netmask(struct in_addr addr, struct in_addr netmask)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:604,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:605,1
    - Dst: guess_range_netmask
      Src: /src/dnsmasq/src/dhcp.c:623,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:628,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:629,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:642,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 45
    argCount: 6
    argNames:
    - local
    - if_index
    - label
    - netmask
    - broadcast
    - vparam
    argTypes:
    - struct in_addr
    - int
    - char*
    - struct in_addr
    - struct in_addr
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 655
    functionName: complete_context
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - guess_range_netmask
    - is_same_net
    linkageType: ''
    returnType: int
    signature: "int complete_context(struct in_addr local, int if_index, char *label,\n\t\t\t
      \   struct in_addr netmask, struct in_addr broadcast, void *vparam)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:665,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:674,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:675,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp.c:680,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - context
    - taddr
    - netids
    argTypes:
    - struct dhcp_context*
    - struct in_addr
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 685
    functionName: address_available
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - ntohl
    - match_netid
    linkageType: ''
    returnType: struct dhcp_context
    signature: "struct dhcp_context *address_available(struct dhcp_context *context,
      \n\t\t\t\t       struct in_addr taddr,\n\t\t\t\t       struct dhcp_netid *netids)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: address_available
      Src: /src/dnsmasq/src/dhcp.c:701,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp.c:704,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:705,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp.c:711,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp.c:712,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 13
    argCount: 3
    argNames:
    - context
    - taddr
    - netids
    argTypes:
    - struct dhcp_context*
    - struct in_addr
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 687
    functionDepth: 2
    functionLinenumber: 687
    functionLinenumberEnd: 722
    functionName: narrow_context
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - is_same_net
    - match_netid
    - address_available
    linkageType: ''
    returnType: struct dhcp_context
    signature: "struct dhcp_context *narrow_context(struct dhcp_context *context,
      \n\t\t\t\t    struct in_addr taddr,\n\t\t\t\t    struct dhcp_netid *netids)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - configs
    - addr
    argTypes:
    - struct dhcp_config*
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 733
    functionName: config_find_by_address
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct dhcp_config
    signature: struct dhcp_config *config_find_by_address(struct dhcp_config *configs,
      struct in_addr addr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/dhcp.c:753,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:763,1
    - Dst: icmp_ping
      Src: /src/dnsmasq/src/dhcp.c:769,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dhcp.c:776,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 4
    argNames:
    - now
    - addr
    - hash
    - loopback
    argTypes:
    - time_t
    - struct in_addr
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 793
    functionName: do_icmp_ping
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - difftime
    - whine_malloc
    - option_bool
    - icmp_ping
    linkageType: ''
    returnType: struct ping_result
    signature: struct ping_result *do_icmp_ping(time_t now, struct in_addr addr, unsigned
      int hash, int loopback)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp.c:821,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:825,1
    - Dst: lease_find_max_addr
      Src: /src/dnsmasq/src/dhcp.c:827,1
    - Dst: htonl
      Src: /src/dnsmasq/src/dhcp.c:830,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:830,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:831,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:831,1
    - Dst: lease_find_by_addr
      Src: /src/dnsmasq/src/dhcp.c:848,1
    - Dst: config_find_by_address
      Src: /src/dnsmasq/src/dhcp.c:849,1
    - Dst: IN_CLASSC
      Src: /src/dnsmasq/src/dhcp.c:850,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:850,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:851,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:851,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:857,1
    - Dst: do_icmp_ping
      Src: /src/dnsmasq/src/dhcp.c:863,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:867,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:877,1
    - Dst: htonl
      Src: /src/dnsmasq/src/dhcp.c:883,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:883,1
    - Dst: htonl
      Src: /src/dnsmasq/src/dhcp.c:885,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/dhcp.c:885,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 39
    argCount: 7
    argNames:
    - context
    - addrp
    - hwaddr
    - hw_len
    - netids
    - now
    - loopback
    argTypes:
    - struct dhcp_context*
    - struct in_addr*
    - unsigned char*
    - int
    - struct dhcp_netid*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 892
      start: 795
    functionDepth: 2
    functionLinenumber: 795
    functionLinenumberEnd: 892
    functionName: address_allocate
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - config_find_by_address
    - option_bool
    - lease_find_by_addr
    - do_icmp_ping
    - lease_find_max_addr
    - match_netid
    - IN_CLASSC
    - htonl
    - ntohl
    linkageType: ''
    returnType: int
    signature: "int address_allocate(struct dhcp_context *context,\n\t\t     struct
      in_addr *addrp, unsigned char *hwaddr, int hw_len, \n\t\t     struct dhcp_netid
      *netids, time_t now, int loopback)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/dnsmasq/src/dhcp.c:896,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:910,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:910,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dhcp.c:910,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp.c:923,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp.c:924,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp.c:925,1
    - Dst: fgets
      Src: /src/dnsmasq/src/dhcp.c:931,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp.c:937,1
    - Dst: isspace
      Src: /src/dnsmasq/src/dhcp.c:937,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp.c:937,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp.c:938,1
    - Dst: isspace
      Src: /src/dnsmasq/src/dhcp.c:943,1
    - Dst: isspace
      Src: /src/dnsmasq/src/dhcp.c:944,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/dhcp.c:946,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:948,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:948,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dhcp.c:959,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:961,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:961,1
    - Dst: canonicalise
      Src: /src/dnsmasq/src/dhcp.c:974,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/dhcp.c:974,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:977,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:977,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp.c:978,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dhcp.c:985,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:991,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:991,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dhcp.c:1005,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dhcp.c:1011,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/dhcp.c:1035,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp.c:1038,1
    - Dst: free
      Src: /src/dnsmasq/src/dhcp.c:1046,1
    - Dst: fclose
      Src: /src/dnsmasq/src/dhcp.c:1050,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:1052,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:1052,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 1053
    functionName: dhcp_read_ethers
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 0
    functionsReached:
    - legal_hostname
    - inet_pton
    - canonicalise
    - hostname_isequal
    - my_syslog
    - whine_malloc
    - _
    - memcpy
    - memcmp
    - strerror
    - fgets
    - parse_hex
    - fclose
    - fopen
    - free
    - isspace
    - strlen
    linkageType: ''
    returnType: void
    signature: void dhcp_read_ethers(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/dhcp.c:1068,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/dhcp.c:1072,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dhcp.c:1073,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp.c:1075,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/dhcp.c:1077,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dhcp.c:1078,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/dhcp.c:1082,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/dhcp.c:1085,1
    - Dst: strip_hostname
      Src: /src/dnsmasq/src/dhcp.c:1086,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1061
    functionDepth: 4
    functionLinenumber: 1061
    functionLinenumberEnd: 1092
    functionName: host_from_dns
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 2
    functionsReached:
    - legal_hostname
    - cache_get_name
    - strip_hostname
    - strlen
    - safe_strncpy
    - hostname_isequal
    - strchr
    - get_domain
    - cache_find_by_addr
    linkageType: ''
    returnType: char
    signature: char *host_from_dns(struct in_addr addr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:1141,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/dhcp.c:1152,1
    - Dst: strchr
      Src: /src/dnsmasq/src/dhcp.c:1154,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/dhcp.c:1155,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:1157,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:1157,1
    - Dst: htons
      Src: /src/dnsmasq/src/dhcp.c:1167,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/dhcp.c:1171,1
    - Dst: send_from
      Src: /src/dnsmasq/src/dhcp.c:1175,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp.c:1177,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:1179,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/dhcp.c:1181,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:1181,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp.c:1183,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp.c:1184,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp.c:1184,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 3
    argNames:
    - iface_index
    - mess
    - sz
    argTypes:
    - int
    - struct dhcp_packet*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1094
    functionDepth: 2
    functionLinenumber: 1094
    functionLinenumberEnd: 1190
    functionName: relay_upstream4
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - ioctl
    - option_bool
    - safe_strncpy
    - snprintf
    - my_syslog
    - _
    - dump_packet_udp
    - htons
    - send_from
    - strchr
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void relay_upstream4(int iface_index, struct dhcp_packet *mess, size_t
      sz)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/dhcp.c:1204,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - mess
    - arrival_interface
    argTypes:
    - struct dhcp_packet*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1193
    functionDepth: 1
    functionLinenumber: 1193
    functionLinenumberEnd: 1210
    functionName: relay_reply4
    functionSourceFile: /src/dnsmasq/src/dhcp.c
    functionUses: 1
    functionsReached:
    - wildcard_match
    linkageType: ''
    returnType: struct dhcp_relay
    signature: struct dhcp_relay *relay_reply4(struct dhcp_packet *mess, char *arrival_interface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dnsmasq/src/util.c:46,1
    - Dst: read_write
      Src: /src/dnsmasq/src/util.c:49,1
    - Dst: read_write
      Src: /src/dnsmasq/src/util.c:50,1
    - Dst: die
      Src: /src/dnsmasq/src/util.c:51,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:51,1
    - Dst: close
      Src: /src/dnsmasq/src/util.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: rand_init
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached:
    - die
    - close
    - _
    - read_write
    - open
    linkageType: ''
    returnType: void
    signature: void rand_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: ROTATE
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTATE(x,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - i
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: MUSH
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MUSH(i,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:70,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:70,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:70,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:70,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:71,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:71,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:71,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:71,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:72,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:72,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:72,1
    - Dst: MUSH
      Src: /src/dnsmasq/src/util.c:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 76
    functionName: surf
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached:
    - MUSH
    linkageType: ''
    returnType: void
    signature: void surf(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: surf
      Src: /src/dnsmasq/src/util.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 88
    functionName: rand16
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 4
    functionsReached:
    - surf
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short rand16(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: surf
      Src: /src/dnsmasq/src/util.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: rand32
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached:
    - surf
    linkageType: ''
    returnType: u32
    signature: u32 rand32(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: surf
      Src: /src/dnsmasq/src/util.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 116
    functionName: rand64
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached:
    - surf
    linkageType: ''
    returnType: u64
    signature: u64 rand64(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - list
    - rr
    argTypes:
    - struct rrlist*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: rr_on_list
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rr_on_list(struct rrlist *list, unsigned short rr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:137,1
    - Dst: isascii
      Src: /src/dnsmasq/src/util.c:158,1
    - Dst: iscntrl
      Src: /src/dnsmasq/src/util.c:158,1
    - Dst: isascii
      Src: /src/dnsmasq/src/util.c:161,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 32
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 198
    functionName: check_name
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 2
    functionsReached:
    - isascii
    - strlen
    - iscntrl
    linkageType: ''
    returnType: int
    signature: int check_name(char *in)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check_name
      Src: /src/dnsmasq/src/util.c:209,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 231
    functionName: legal_hostname
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached:
    - check_name
    linkageType: ''
    returnType: int
    signature: int legal_hostname(char *name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: check_name
      Src: /src/dnsmasq/src/util.c:241,1
    - Dst: idn2_to_ascii_lz
      Src: /src/dnsmasq/src/util.c:248,1
    - Dst: idna_to_ascii_lz
      Src: /src/dnsmasq/src/util.c:250,1
    - Dst: free
      Src: /src/dnsmasq/src/util.c:255,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/util.c:259,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:259,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/util.c:272,1
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:272,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/util.c:273,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - in
    - nomem
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 278
    functionName: canonicalise
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 2
    functionsReached:
    - strcpy
    - idn2_to_ascii_lz
    - check_name
    - whine_malloc
    - my_syslog
    - _
    - free
    - strlen
    - idna_to_ascii_lz
    linkageType: ''
    returnType: char
    signature: char *canonicalise(char *in, int *nomem)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - p
    - sval
    - limit
    argTypes:
    - unsigned char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 308
    functionName: do_rfc1035_name
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *do_rfc1035_name(unsigned char *p, char *sval, char *limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/dnsmasq/src/util.c:313,1
    - Dst: die
      Src: /src/dnsmasq/src/util.c:316,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: safe_malloc
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 4
    functionsReached:
    - calloc
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void *safe_malloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncpy
      Src: /src/dnsmasq/src/util.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dest
    - src
    - size
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 330
    functionName: safe_strncpy
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 8
    functionsReached:
    - strncpy
    linkageType: ''
    returnType: void
    signature: void safe_strncpy(char *dest, const char *src, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/dnsmasq/src/util.c:334,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/util.c:335,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/util.c:336,1
    - Dst: die
      Src: /src/dnsmasq/src/util.c:337,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 2
    argNames:
    - fd
    - read_noblock
    argTypes:
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 338
    functionName: safe_pipe
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached:
    - pipe
    - fix_fd
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void safe_pipe(int *fd, int read_noblock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/dnsmasq/src/util.c:342,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/util.c:345,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 348
    functionName: whine_malloc
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 29
    functionsReached:
    - calloc
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void *whine_malloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/dnsmasq/src/util.c:352,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/util.c:355,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: whine_realloc
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 2
    functionsReached:
    - realloc
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void *whine_realloc(void *ptr, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/util.c:372,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - union mysockaddr*
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 376
    functionName: sockaddr_isequal
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 6
    functionsReached:
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: int
    signature: int sockaddr_isequal(const union mysockaddr *s1, const union mysockaddr
      *s2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/util.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 389
    functionName: sockaddr_isnull
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    linkageType: ''
    returnType: int
    signature: int sockaddr_isnull(const union mysockaddr *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - addr
    argTypes:
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 401
    functionName: sa_len
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sa_len(union mysockaddr *addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 425
    functionName: hostname_order
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hostname_order(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:429,1
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:429,1
    - Dst: hostname_order
      Src: /src/dnsmasq/src/util.c:429,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 430
    functionName: hostname_isequal
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 14
    functionsReached:
    - strlen
    - hostname_order
    linkageType: ''
    returnType: int
    signature: int hostname_isequal(const char *a, const char *b)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 467
    functionName: hostname_issubdomain
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hostname_issubdomain(char *a, char *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/dnsmasq/src/util.c:475,1
    - Dst: die
      Src: /src/dnsmasq/src/util.c:476,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:476,1
    - Dst: time
      Src: /src/dnsmasq/src/util.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 482
    functionName: dnsmasq_time
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 3
    functionsReached:
    - _
    - die
    - time
    - clock_gettime
    linkageType: ''
    returnType: time_t
    signature: time_t dnsmasq_time(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/dnsmasq/src/util.c:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 491
    functionName: dnsmasq_milliseconds
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 4
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: u32
    signature: u32 dnsmasq_milliseconds(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - mask
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: netmask_length
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int netmask_length(struct in_addr mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - mask
    argTypes:
    - struct in_addr
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: is_same_net
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_same_net(struct in_addr a, struct in_addr b, struct in_addr
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/dnsmasq/src/util.c:515,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/util.c:517,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - a
    - b
    - prefix
    argTypes:
    - struct in_addr
    - struct in_addr
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 518
    functionName: is_same_net_prefix
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 3
    functionsReached:
    - is_same_net
    - htonl
    linkageType: ''
    returnType: int
    signature: int is_same_net_prefix(struct in_addr a, struct in_addr b, int prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/util.c:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - a
    - b
    - prefixlen
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 534
    functionName: is_same_net6
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 14
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int is_same_net6(struct in6_addr *a, struct in6_addr *b, int prefixlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 546
    functionName: addr6part
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: u64
    signature: u64 addr6part(struct in6_addr *addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - addr
    - host
    argTypes:
    - struct in6_addr*
    - u64
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 557
    functionName: setaddr6part
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setaddr6part(struct in6_addr *addr, u64 host)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/util.c:567,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/util.c:568,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/util.c:573,1
    - Dst: if_indextoname
      Src: /src/dnsmasq/src/util.c:575,1
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:576,1
    - Dst: strlen
      Src: /src/dnsmasq/src/util.c:576,1
    - Dst: strcat
      Src: /src/dnsmasq/src/util.c:578,1
    - Dst: strcat
      Src: /src/dnsmasq/src/util.c:579,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/util.c:581,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - addr
    - buf
    argTypes:
    - union mysockaddr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 585
    functionName: prettyprint_addr
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 10
    functionsReached:
    - strcat
    - if_indextoname
    - ntohs
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: int
    signature: int prettyprint_addr(union mysockaddr *addr, char *buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:590,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:590,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:595,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:597,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:599,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:601,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - t
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 603
    functionName: prettyprint_time
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached:
    - sprintf
    - _
    linkageType: ''
    returnType: void
    signature: void prettyprint_time(char *buf, unsigned int t)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isxdigit
      Src: /src/dnsmasq/src/util.c:620,1
    - Dst: strtol
      Src: /src/dnsmasq/src/util.c:631,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/util.c:637,1
    - Dst: strchr
      Src: /src/dnsmasq/src/util.c:655,1
    - Dst: strtol
      Src: /src/dnsmasq/src/util.c:657,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 5
    argNames:
    - in
    - out
    - maxlen
    - wildcard_mask
    - mac_type
    argTypes:
    - char*
    - unsigned char*
    - int
    - unsigned int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 674
    functionName: parse_hex
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 4
    functionsReached:
    - strtol
    - strchr
    - isxdigit
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int parse_hex(char *in, unsigned char *out, int maxlen, \n\t      unsigned
      int *wildcard_mask, int *mac_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - a
    - b
    - len
    - mask
    argTypes:
    - unsigned char*
    - unsigned char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 689
    functionName: memcmp_masked
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int memcmp_masked(unsigned char *a, unsigned char *b, int len, unsigned
      int mask)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/util.c:699,1
    - Dst: free
      Src: /src/dnsmasq/src/util.c:708,1
    - Dst: iov::iov
      Src: /src/dnsmasq/src/util.c:711,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - iov
    - size
    argTypes:
    - struct iovec*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 715
    functionName: expand_buf
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 3
    functionsReached:
    - iov::iov
    - free
    - whine_malloc::whine_malloc
    linkageType: ''
    returnType: int
    signature: int expand_buf(struct iovec *iov, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:723,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/util.c:726,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - buff
    - mac
    - len
    argTypes:
    - char*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 729
    functionName: print_mac
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *print_mac(char *buff, unsigned char *mac, int len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nanosleep
      Src: /src/dnsmasq/src/util.c:755,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - rc
    argTypes:
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 766
    functionName: retry_send
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 9
    functionsReached:
    - nanosleep
    linkageType: ''
    returnType: int
    signature: int retry_send(ssize_t rc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dnsmasq/src/util.c:783,1
    - Dst: write
      Src: /src/dnsmasq/src/util.c:785,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 4
    argNames:
    - fd
    - packet
    - size
    - rw
    argTypes:
    - int
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 811
    functionName: read_write
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached:
    - read
    - write
    linkageType: ''
    returnType: int
    signature: int read_write(int fd, unsigned char *packet, int size, int rw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/dnsmasq/src/util.c:836,1
    - Dst: readdir
      Src: /src/dnsmasq/src/util.c:840,1
    - Dst: strtol
      Src: /src/dnsmasq/src/util.c:846,1
    - Dst: dirfd
      Src: /src/dnsmasq/src/util.c:848,1
    - Dst: close
      Src: /src/dnsmasq/src/util.c:853,1
    - Dst: closedir
      Src: /src/dnsmasq/src/util.c:856,1
    - Dst: close
      Src: /src/dnsmasq/src/util.c:865,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 15
    argCount: 4
    argNames:
    - max_fd
    - spare1
    - spare2
    - spare3
    argTypes:
    - long
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 866
    functionName: close_fds
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 1
    functionsReached:
    - readdir
    - opendir
    - close
    - strtol
    - closedir
    - dirfd
    linkageType: ''
    returnType: void
    signature: void close_fds(long max_fd, int spare1, int spare2, int spare3)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - wildcard
    - match
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 884
    functionName: wildcard_match
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int wildcard_match(const char* wildcard, const char* match)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - wildcard
    - match
    - num
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 903
    functionName: wildcard_matchn
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int wildcard_matchn(const char* wildcard, const char* match, int num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uname
      Src: /src/dnsmasq/src/util.c:912,1
    - Dst: die
      Src: /src/dnsmasq/src/util.c:913,1
    - Dst: _
      Src: /src/dnsmasq/src/util.c:913,1
    - Dst: strtok
      Src: /src/dnsmasq/src/util.c:915,1
    - Dst: atoi
      Src: /src/dnsmasq/src/util.c:916,1
    - Dst: strtok
      Src: /src/dnsmasq/src/util.c:917,1
    - Dst: atoi
      Src: /src/dnsmasq/src/util.c:918,1
    - Dst: strtok
      Src: /src/dnsmasq/src/util.c:919,1
    - Dst: atoi
      Src: /src/dnsmasq/src/util.c:920,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 921
    functionName: kernel_version
    functionSourceFile: /src/dnsmasq/src/util.c
    functionUses: 0
    functionsReached:
    - uname
    - strtok
    - die
    - _
    - atoi
    linkageType: ''
    returnType: int
    signature: int kernel_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: IFA_RTA
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IFA_RTA(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: NDA_RTA
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NDA_RTA(r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/netlink.c:74,1
    - Dst: bind
      Src: /src/dnsmasq/src/netlink.c:76,1
    - Dst: bind
      Src: /src/dnsmasq/src/netlink.c:79,1
    - Dst: getsockname
      Src: /src/dnsmasq/src/netlink.c:85,1
    - Dst: die
      Src: /src/dnsmasq/src/netlink.c:86,1
    - Dst: _
      Src: /src/dnsmasq/src/netlink.c:86,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/netlink.c:93,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 96
    functionName: netlink_init
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 0
    functionsReached:
    - getsockname
    - bind
    - die
    - _
    - safe_malloc
    - socket
    linkageType: ''
    returnType: char
    signature: char *netlink_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: recvmsg
      Src: /src/dnsmasq/src/netlink.c:114,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/netlink.c:123,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/netlink.c:127,1
    - Dst: recvmsg
      Src: /src/dnsmasq/src/netlink.c:132,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 147
    functionName: netlink_recv
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 0
    functionsReached:
    - expand_buf
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t netlink_recv(int flags)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/netlink.c:168,1
    - Dst: memset
      Src: /src/dnsmasq/src/netlink.c:169,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/netlink.c:187,1
    - Dst: sendto
      Src: /src/dnsmasq/src/netlink.c:187,1
    - Dst: netlink_recv
      Src: /src/dnsmasq/src/netlink.c:195,1
    - Dst: nl_multicast_state
      Src: /src/dnsmasq/src/netlink.c:199,1
    - Dst: NLMSG_OK
      Src: /src/dnsmasq/src/netlink.c:205,1
    - Dst: NLMSG_NEXT
      Src: /src/dnsmasq/src/netlink.c:205,1
    - Dst: nl_async
      Src: /src/dnsmasq/src/netlink.c:209,1
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/src/netlink.c:221,1
    - Dst: IFA_RTA
      Src: /src/dnsmasq/src/netlink.c:222,1
    - Dst: NLMSG_LENGTH
      Src: /src/dnsmasq/src/netlink.c:223,1
    - Dst: htonl
      Src: /src/dnsmasq/src/netlink.c:232,1
    - Dst: RTA_OK
      Src: /src/dnsmasq/src/netlink.c:237,1
    - Dst: RTA_DATA
      Src: /src/dnsmasq/src/netlink.c:244,1
    - Dst: RTA_NEXT
      Src: /src/dnsmasq/src/netlink.c:246,1
    - Dst: callback_t::af_inet
      Src: /src/dnsmasq/src/netlink.c:250,1
    - Dst: RTA_OK
      Src: /src/dnsmasq/src/netlink.c:259,1
    - Dst: RTA_NEXT
      Src: /src/dnsmasq/src/netlink.c:278,1
    - Dst: callback_t::af_inet6
      Src: /src/dnsmasq/src/netlink.c:291,1
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/src/netlink.c:300,1
    - Dst: NDA_RTA
      Src: /src/dnsmasq/src/netlink.c:301,1
    - Dst: NLMSG_LENGTH
      Src: /src/dnsmasq/src/netlink.c:302,1
    - Dst: RTA_OK
      Src: /src/dnsmasq/src/netlink.c:306,1
    - Dst: RTA_NEXT
      Src: /src/dnsmasq/src/netlink.c:316,1
    - Dst: callback_t::af_unspec
      Src: /src/dnsmasq/src/netlink.c:321,1
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/src/netlink.c:327,1
    - Dst: IFLA_RTA
      Src: /src/dnsmasq/src/netlink.c:328,1
    - Dst: NLMSG_LENGTH
      Src: /src/dnsmasq/src/netlink.c:329,1
    - Dst: RTA_OK
      Src: /src/dnsmasq/src/netlink.c:333,1
    - Dst: RTA_NEXT
      Src: /src/dnsmasq/src/netlink.c:341,1
    - Dst: callback_t::af_local
      Src: /src/dnsmasq/src/netlink.c:345,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 103
    argCount: 3
    argNames:
    - family
    - parm
    - callback
    argTypes:
    - int
    - void*
    - callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 350
    functionName: iface_enumerate
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 8
    functionsReached:
    - callback_t::af_inet
    - nl_async
    - retry_send
    - htonl
    - NDA_RTA
    - callback_t::af_inet6
    - IFA_RTA
    - IFLA_RTA
    - callback_t::af_local
    - NLMSG_DATA
    - netlink_recv
    - NLMSG_OK
    - NLMSG_LENGTH
    - NLMSG_NEXT
    - callback_t::af_unspec
    - RTA_OK
    - RTA_NEXT
    - RTA_DATA
    - memset
    - nl_multicast_state
    - sendto
    linkageType: ''
    returnType: int
    signature: int iface_enumerate(int family, void *parm, callback_t callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netlink_recv
      Src: /src/dnsmasq/src/netlink.c:359,1
    - Dst: NLMSG_OK
      Src: /src/dnsmasq/src/netlink.c:361,1
    - Dst: NLMSG_NEXT
      Src: /src/dnsmasq/src/netlink.c:361,1
    - Dst: nl_async
      Src: /src/dnsmasq/src/netlink.c:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 364
    functionName: nl_multicast_state
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 1
    functionsReached:
    - nl_async
    - NLMSG_NEXT
    - netlink_recv
    - NLMSG_OK
    linkageType: ''
    returnType: void
    signature: void nl_multicast_state(unsigned state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nl_multicast_state
      Src: /src/dnsmasq/src/netlink.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 2
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: netlink_multicast
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 0
    functionsReached:
    - nl_multicast_state
    linkageType: ''
    returnType: void
    signature: void netlink_multicast(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/src/netlink.c:377,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/netlink.c:379,1
    - Dst: _
      Src: /src/dnsmasq/src/netlink.c:379,1
    - Dst: strerror
      Src: /src/dnsmasq/src/netlink.c:379,1
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/src/netlink.c:389,1
    - Dst: queue_event
      Src: /src/dnsmasq/src/netlink.c:395,1
    - Dst: queue_event
      Src: /src/dnsmasq/src/netlink.c:402,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 16
    argCount: 2
    argNames:
    - h
    - state
    argTypes:
    - struct nlmsghdr*
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 406
    functionName: nl_async
    functionSourceFile: /src/dnsmasq/src/netlink.c
    functionUses: 2
    functionsReached:
    - NLMSG_DATA
    - my_syslog
    - _
    - strerror
    - queue_event
    linkageType: ''
    returnType: unsigned
    signature: unsigned nl_async(struct nlmsghdr *h, unsigned state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/outpacket.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - container
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: end_opt6
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 0
    functionsReached:
    - PUTSHORT
    linkageType: ''
    returnType: void
    signature: void end_opt6(int container)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/outpacket.c:36,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/outpacket.c:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: reset_counter
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 1
    functionsReached:
    - save_counter
    - memset
    linkageType: ''
    returnType: void
    signature: void reset_counter(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - newval
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: save_counter
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int save_counter(int newval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand_buf
      Src: /src/dnsmasq/src/outpacket.c:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - headroom
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: expand
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 5
    functionsReached:
    - expand_buf
    linkageType: ''
    returnType: void
    signature: void *expand(size_t headroom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/outpacket.c:70,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/outpacket.c:72,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/outpacket.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - opt
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 77
    functionName: new_opt6
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 0
    functionsReached:
    - PUTSHORT
    - expand
    linkageType: ''
    returnType: int
    signature: int new_opt6(int opt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/outpacket.c:83,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/outpacket.c:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: put_opt6
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 1
    functionsReached:
    - memcpy
    - expand
    linkageType: ''
    returnType: void
    signature: void *put_opt6(void *data, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/outpacket.c:93,1
    - Dst: PUTLONG
      Src: /src/dnsmasq/src/outpacket.c:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: put_opt6_long
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 1
    functionsReached:
    - PUTLONG
    - expand
    linkageType: ''
    returnType: void
    signature: void put_opt6_long(unsigned int val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/outpacket.c:101,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/outpacket.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: put_opt6_short
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 1
    functionsReached:
    - PUTSHORT
    - expand
    linkageType: ''
    returnType: void
    signature: void put_opt6_short(unsigned int val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand
      Src: /src/dnsmasq/src/outpacket.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 111
    functionName: put_opt6_char
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 1
    functionsReached:
    - expand
    linkageType: ''
    returnType: void
    signature: void put_opt6_char(unsigned int val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: put_opt6
      Src: /src/dnsmasq/src/outpacket.c:115,1
    - Dst: strlen
      Src: /src/dnsmasq/src/outpacket.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: put_opt6_string
    functionSourceFile: /src/dnsmasq/src/outpacket.c
    functionUses: 0
    functionsReached:
    - strlen
    - put_opt6
    linkageType: ''
    returnType: void
    signature: void put_opt6_string(char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: OPCODE
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OPCODE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: SET_OPCODE
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_OPCODE(x, code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: RCODE
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RCODE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - code
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: SET_RCODE
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_RCODE(x, code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: GETSHORT
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETSHORT(s, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 162
    functionName: GETLONG
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETLONG(l, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: PUTSHORT
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTSHORT(s, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 180
    functionName: PUTLONG
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTLONG(l, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - header
    - ','
    - pp
    - ','
    - plen
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: CHECK_LEN
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_LEN(header, pp, plen, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - header
    - ','
    - pp
    - ','
    - plen
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: ADD_RDLEN
    functionSourceFile: /src/dnsmasq/src/dns-protocol.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADD_RDLEN(header, pp, plen, len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/inotify.c:50,1
    - Dst: readlink
      Src: /src/dnsmasq/src/inotify.c:51,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:58,1
    - Dst: die
      Src: /src/dnsmasq/src/inotify.c:62,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:62,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/inotify.c:69,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/inotify.c:72,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:72,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/inotify.c:74,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:75,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:76,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:84,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 86
    functionName: my_readlink
    functionSourceFile: /src/dnsmasq/src/inotify.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strcat
    - die
    - free
    - _
    - safe_malloc
    - readlink
    - strlen
    - strrchr
    linkageType: ''
    returnType: char
    signature: char *my_readlink(char *path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/inotify.c:91,1
    - Dst: inotify_init1
      Src: /src/dnsmasq/src/inotify.c:92,1
    - Dst: die
      Src: /src/dnsmasq/src/inotify.c:95,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:95,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/inotify.c:97,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/inotify.c:102,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:102,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/inotify.c:105,1
    - Dst: my_readlink
      Src: /src/dnsmasq/src/inotify.c:108,1
    - Dst: die
      Src: /src/dnsmasq/src/inotify.c:111,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:111,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:112,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/inotify.c:118,1
    - Dst: inotify_add_watch
      Src: /src/dnsmasq/src/inotify.c:121,1
    - Dst: die
      Src: /src/dnsmasq/src/inotify.c:127,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:127,1
    - Dst: die
      Src: /src/dnsmasq/src/inotify.c:131,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:131,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 134
    functionName: inotify_dnsmasq_init
    functionSourceFile: /src/dnsmasq/src/inotify.c
    functionUses: 0
    functionsReached:
    - strcpy
    - my_readlink
    - strrchr
    - option_bool
    - die
    - inotify_add_watch
    - _
    - safe_malloc
    - free
    - strlen
    - inotify_init1
    linkageType: ''
    returnType: void
    signature: void inotify_dnsmasq_init()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:140,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/inotify.c:145,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/inotify.c:149,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/inotify.c:153,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:153,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:155,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/inotify.c:159,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:160,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:161,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - dd
    - file
    argTypes:
    - struct dyndir*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 174
    functionName: dyndir_addhosts
    functionSourceFile: /src/dnsmasq/src/inotify.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strcat
    - strcmp
    - whine_malloc
    - free
    - strlen
    linkageType: ''
    returnType: struct hostsfile
    signature: struct hostsfile *dyndir_addhosts(struct dyndir *dd, char *file)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dnsmasq/src/inotify.c:191,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:193,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:193,1
    - Dst: strerror
      Src: /src/dnsmasq/src/inotify.c:194,1
    - Dst: S_ISDIR
      Src: /src/dnsmasq/src/inotify.c:198,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:200,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:200,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:201,1
    - Dst: inotify_add_watch
      Src: /src/dnsmasq/src/inotify.c:207,1
    - Dst: opendir
      Src: /src/dnsmasq/src/inotify.c:213,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:215,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:215,1
    - Dst: strerror
      Src: /src/dnsmasq/src/inotify.c:216,1
    - Dst: readdir
      Src: /src/dnsmasq/src/inotify.c:220,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:222,1
    - Dst: dyndir_addhosts
      Src: /src/dnsmasq/src/inotify.c:236,1
    - Dst: stat
      Src: /src/dnsmasq/src/inotify.c:237,1
    - Dst: S_ISREG
      Src: /src/dnsmasq/src/inotify.c:237,1
    - Dst: read_hostsfile
      Src: /src/dnsmasq/src/inotify.c:238,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/inotify.c:245,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:245,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/inotify.c:247,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:248,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:249,1
    - Dst: stat
      Src: /src/dnsmasq/src/inotify.c:252,1
    - Dst: S_ISREG
      Src: /src/dnsmasq/src/inotify.c:252,1
    - Dst: option_read_dynfile
      Src: /src/dnsmasq/src/inotify.c:253,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:255,1
    - Dst: closedir
      Src: /src/dnsmasq/src/inotify.c:261,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 39
    argCount: 4
    argNames:
    - flag
    - total_size
    - rhash
    - revhashsz
    argTypes:
    - int
    - int
    - struct crec**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 178
    functionDepth: 3
    functionLinenumber: 178
    functionLinenumberEnd: 263
    functionName: set_dynamic_inotify
    functionSourceFile: /src/dnsmasq/src/inotify.c
    functionUses: 0
    functionsReached:
    - readdir
    - strcpy
    - read_hostsfile
    - strcat
    - stat
    - opendir
    - whine_malloc
    - my_syslog
    - inotify_add_watch
    - _
    - dyndir_addhosts
    - free
    - strerror
    - S_ISDIR
    - S_ISREG
    - closedir
    - option_read_dynfile
    - strlen
    linkageType: ''
    returnType: void
    signature: void set_dynamic_inotify(int flag, int total_size, struct crec **rhash,
      int revhashsz)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/dnsmasq/src/inotify.c:279,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:291,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/inotify.c:298,1
    - Dst: dyndir_addhosts
      Src: /src/dnsmasq/src/inotify.c:307,1
    - Dst: cache_remove_uid
      Src: /src/dnsmasq/src/inotify.c:309,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:313,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:313,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:315,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:315,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:318,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:318,1
    - Dst: read_hostsfile
      Src: /src/dnsmasq/src/inotify.c:322,1
    - Dst: dhcp_update_configs
      Src: /src/dnsmasq/src/inotify.c:327,1
    - Dst: lease_update_from_configs
      Src: /src/dnsmasq/src/inotify.c:328,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/inotify.c:329,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/inotify.c:330,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/inotify.c:340,1
    - Dst: strlen
      Src: /src/dnsmasq/src/inotify.c:340,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/inotify.c:342,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:343,1
    - Dst: strcat
      Src: /src/dnsmasq/src/inotify.c:344,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/inotify.c:346,1
    - Dst: _
      Src: /src/dnsmasq/src/inotify.c:346,1
    - Dst: option_read_dynfile
      Src: /src/dnsmasq/src/inotify.c:348,1
    - Dst: dhcp_update_configs
      Src: /src/dnsmasq/src/inotify.c:351,1
    - Dst: lease_update_from_configs
      Src: /src/dnsmasq/src/inotify.c:352,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/inotify.c:353,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/inotify.c:354,1
    - Dst: option_read_dynfile
      Src: /src/dnsmasq/src/inotify.c:358,1
    - Dst: free
      Src: /src/dnsmasq/src/inotify.c:360,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 53
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 265
    functionDepth: 5
    functionLinenumber: 265
    functionLinenumberEnd: 370
    functionName: inotify_check
    functionSourceFile: /src/dnsmasq/src/inotify.c
    functionUses: 0
    functionsReached:
    - strcpy
    - read_hostsfile
    - dhcp_update_configs
    - strcat
    - whine_malloc
    - dyndir_addhosts
    - read
    - my_syslog
    - _
    - lease_update_dns
    - free
    - cache_remove_uid
    - strcmp
    - strlen
    - lease_update_from_configs
    - lease_update_file
    - option_read_dynfile
    linkageType: ''
    returnType: int
    signature: int inotify_check(time_t now)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: order
      Src: /src/dnsmasq/src/domain-match.c:142,1
    - Dst: order
      Src: /src/dnsmasq/src/domain-match.c:196,1
    - Dst: order
      Src: /src/dnsmasq/src/domain-match.c:201,1
    - Dst: filter_servers
      Src: /src/dnsmasq/src/domain-match.c:209,1
    - Dst: filter_servers
      Src: /src/dnsmasq/src/domain-match.c:247,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 71
    argCount: 4
    argNames:
    - domain
    - flags
    - lowout
    - highout
    argTypes:
    - char*
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 260
    functionName: lookup_domain
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 5
    functionsReached:
    - order
    - filter_servers
    linkageType: ''
    returnType: int
    signature: int lookup_domain(char *domain, int flags, int *lowout, int *highout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: order_servers
      Src: /src/dnsmasq/src/domain-match.c:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct server*
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: server_samegroup
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 1
    functionsReached:
    - order_servers
    linkageType: ''
    returnType: int
    signature: int server_samegroup(struct server *a, struct server *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: order_servers
      Src: /src/dnsmasq/src/domain-match.c:275,1
    - Dst: order_servers
      Src: /src/dnsmasq/src/domain-match.c:278,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 48
    argCount: 4
    argNames:
    - seed
    - flags
    - lowout
    - highout
    argTypes:
    - int
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 359
    functionName: filter_servers
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 3
    functionsReached:
    - order_servers
    linkageType: ''
    returnType: int
    signature: int filter_servers(int seed, int flags, int *lowout, int *highout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: order_servers
      Src: /src/dnsmasq/src/domain-match.c:380,1
    - Dst: check_for_local_domain
      Src: /src/dnsmasq/src/domain-match.c:383,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - now
    - first
    - name
    argTypes:
    - time_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 361
    functionDepth: 3
    functionLinenumber: 361
    functionLinenumberEnd: 391
    functionName: is_local_answer
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 2
    functionsReached:
    - order_servers
    - check_for_local_domain
    linkageType: ''
    returnType: int
    signature: int is_local_answer(time_t now, int first, char *name)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: setup_reply
      Src: /src/dnsmasq/src/domain-match.c:400,1
    - Dst: log_query
      Src: /src/dnsmasq/src/domain-match.c:405,1
    - Dst: RCODE
      Src: /src/dnsmasq/src/domain-match.c:410,1
    - Dst: log_query
      Src: /src/dnsmasq/src/domain-match.c:412,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/domain-match.c:415,1
    - Dst: memset
      Src: /src/dnsmasq/src/domain-match.c:424,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/domain-match.c:428,1
    - Dst: log_query
      Src: /src/dnsmasq/src/domain-match.c:430,1
    - Dst: memset
      Src: /src/dnsmasq/src/domain-match.c:439,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/domain-match.c:443,1
    - Dst: log_query
      Src: /src/dnsmasq/src/domain-match.c:445,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/domain-match.c:451,1
    - Dst: htons
      Src: /src/dnsmasq/src/domain-match.c:456,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 9
    argNames:
    - flags
    - gotname
    - size
    - header
    - name
    - limit
    - first
    - last
    - ede
    argTypes:
    - int
    - int
    - size_t
    - struct dns_header*
    - char*
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 459
    functionName: make_local_answer
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 2
    functionsReached:
    - memset
    - add_resource_record
    - log_query
    - setup_reply
    - skip_questions
    - htons
    - RCODE
    linkageType: ''
    returnType: size_t
    signature: size_t make_local_answer(int flags, int gotname, size_t size, struct
      dns_header *header, char *name, char *limit, int first, int last, int ede)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_domain
      Src: /src/dnsmasq/src/domain-match.c:469,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 4
    argNames:
    - server
    - keyname
    - firstp
    - lastp
    argTypes:
    - struct server*
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 489
    functionName: dnssec_server
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 3
    functionsReached:
    - lookup_domain
    linkageType: ''
    returnType: int
    signature: int dnssec_server(struct server *server, char *keyname, int *firstp,
      int *lastp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hostname_order
      Src: /src/dnsmasq/src/domain-match.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - qdomain
    - qlen
    - serv
    argTypes:
    - char*
    - size_t
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 511
    functionName: order
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 3
    functionsReached:
    - hostname_order
    linkageType: ''
    returnType: int
    signature: int order(char *qdomain, size_t qlen, struct server *serv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: order
      Src: /src/dnsmasq/src/domain-match.c:523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct server*
    - struct server*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 513
    functionDepth: 2
    functionLinenumber: 513
    functionLinenumberEnd: 531
    functionName: order_servers
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 3
    functionsReached:
    - order
    linkageType: ''
    returnType: int
    signature: int order_servers(struct server *s1, struct server *s2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: order_servers
      Src: /src/dnsmasq/src/domain-match.c:540,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 533
    functionDepth: 3
    functionLinenumber: 533
    functionLinenumberEnd: 558
    functionName: order_qsort
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 0
    functionsReached:
    - order_servers
    linkageType: ''
    returnType: int
    signature: int order_qsort(const void *a, const void *b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:601,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:602,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - flag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 607
    functionName: mark_servers
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void mark_servers(int flag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: server_gone
      Src: /src/dnsmasq/src/domain-match.c:619,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:621,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 609
    functionDepth: 3
    functionLinenumber: 609
    functionLinenumberEnd: 630
    functionName: cleanup_servers
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 2
    functionsReached:
    - free
    - server_gone
    linkageType: ''
    returnType: void
    signature: void cleanup_servers(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/domain-match.c:656,1
    - Dst: canonicalise
      Src: /src/dnsmasq/src/domain-match.c:658,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/domain-match.c:674,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:676,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/domain-match.c:703,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:721,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/domain-match.c:726,1
    - Dst: free
      Src: /src/dnsmasq/src/domain-match.c:728,1
    - Dst: memset
      Src: /src/dnsmasq/src/domain-match.c:732,1
    - Dst: rand32
      Src: /src/dnsmasq/src/domain-match.c:743,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/domain-match.c:747,1
    - Dst: strlen
      Src: /src/dnsmasq/src/domain-match.c:758,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 75
    argCount: 6
    argNames:
    - flags
    - addr
    - source_addr
    - interface
    - domain
    - local_addr
    argTypes:
    - int
    - union mysockaddr*
    - union mysockaddr*
    - char*
    - char*
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 632
    functionDepth: 3
    functionLinenumber: 632
    functionLinenumberEnd: 761
    functionName: add_update_server
    functionSourceFile: /src/dnsmasq/src/domain-match.c
    functionUses: 2
    functionsReached:
    - memset
    - strlen
    - safe_strncpy
    - hostname_isequal
    - whine_malloc
    - free
    - rand32
    - canonicalise
    linkageType: ''
    returnType: int
    signature: "int add_update_server(int flags,\n\t\t      union mysockaddr *addr,\n\t\t
      \     union mysockaddr *source_addr,\n\t\t      const char *interface,\n\t\t
      \     const char *domain,\n\t\t      union all_addr *local_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: countof
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: countof(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: MIN
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: gettext_noop
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gettext_noop(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: _
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 66
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - S
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: _
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 66
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _(S)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 297
    functionName: option_var
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_var(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 298
    functionName: option_val
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_val(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 299
    functionName: option_bool
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_bool(x)
  - 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: 782
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 782
    functionName: STAT_ISEQUAL
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STAT_ISEQUAL(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - config
    - ','
    - mask
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 937
    functionName: have_config
    functionSourceFile: /src/dnsmasq/src/dnsmasq.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: have_config(config, mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: opt6_len
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_len(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: opt6_type
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_type(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: opt6_ptr
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_ptr(opt, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: opt6_user_vendor_ptr
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_user_vendor_ptr(opt, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: opt6_user_vendor_len
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_user_vendor_len(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - end
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: opt6_user_vendor_next
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: opt6_user_vendor_next(opt, end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reset_counter
      Src: /src/dnsmasq/src/rfc3315.c:88,1
    - Dst: dhcp6_maybe_relay
      Src: /src/dnsmasq/src/rfc3315.c:99,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/rfc3315.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 9
    argNames:
    - context
    - interface
    - iface_name
    - fallback
    - ll_addr
    - ula_addr
    - sz
    - client_addr
    - now
    argTypes:
    - struct dhcp_context*
    - int
    - char*
    - struct in6_addr*
    - struct in6_addr*
    - struct in6_addr*
    - size_t
    - struct in6_addr*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 104
    functionName: dhcp6_reply
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - dhcp6_maybe_relay
    - IN6_IS_ADDR_MULTICAST
    - reset_counter
    linkageType: ''
    returnType: unsigned short
    signature: "unsigned short dhcp6_reply(struct dhcp_context *context, int interface,
      char *iface_name,\n\t\t\t   struct in6_addr *fallback,  struct in6_addr *ll_addr,
      struct in6_addr *ula_addr,\n\t\t\t   size_t sz, struct in6_addr *client_addr,
      time_t now)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: get_client_mac
      Src: /src/dnsmasq/src/rfc3315.c:129,1
    - Dst: IN6_IS_ADDR_LOOPBACK
      Src: /src/dnsmasq/src/rfc3315.c:136,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/rfc3315.c:137,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/rfc3315.c:138,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc3315.c:147,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:152,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:153,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:160,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:161,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:171,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:172,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:173,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:181,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:182,1
    - Dst: dhcp6_no_relay
      Src: /src/dnsmasq/src/rfc3315.c:186,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:195,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:211,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:212,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc3315.c:213,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:213,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:223,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:225,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:228,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:229,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:230,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:230,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:233,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:235,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:235,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:239,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:241,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:241,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:242,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:246,1
    - Dst: dhcp6_maybe_relay
      Src: /src/dnsmasq/src/rfc3315.c:250,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:250,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:250,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:254,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:254,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:254,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:255,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 73
    argCount: 6
    argNames:
    - state
    - inbuff
    - sz
    - client_addr
    - is_unicast
    - now
    argTypes:
    - struct state*
    - unsigned char*
    - size_t
    - struct in6_addr*
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 260
    functionName: dhcp6_maybe_relay
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 2
    functionsReached:
    - dhcp6_maybe_relay
    - opt6_type
    - end_opt6
    - opt6_uint
    - get_client_mac
    - IN6_IS_ADDR_LINKLOCAL
    - new_opt6
    - dhcp6_no_relay
    - opt6_find
    - IN6_IS_ADDR_MULTICAST
    - opt6_len
    - opt6_ptr
    - memcpy
    - put_opt6
    - my_syslog
    - _
    - inet_ntop
    - is_same_net6
    - IN6_ARE_ADDR_EQUAL
    - opt6_next
    - memcmp
    - IN6_IS_ADDR_LOOPBACK
    linkageType: ''
    returnType: int
    signature: "int dhcp6_maybe_relay(struct state *state, unsigned char *inbuff,
      size_t sz, \n\t\t\t     struct in6_addr *client_addr, int is_unicast, time_t
      now)"
  - BBCount: 114
    BranchProfiles: []
    Callsites:
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:299,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:301,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:303,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:312,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:314,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:315,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:317,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:317,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:320,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:320,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:325,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:327,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:328,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:329,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:330,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:331,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:338,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:348,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc3315.c:349,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:349,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:355,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc3315.c:356,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:356,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:360,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:361,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:362,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:369,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:370,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:371,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:372,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:388,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:390,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:390,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:395,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:398,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:405,1
    - Dst: opt6_user_vendor_next
      Src: /src/dnsmasq/src/rfc3315.c:405,1
    - Dst: opt6_user_vendor_len
      Src: /src/dnsmasq/src/rfc3315.c:406,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc3315.c:407,1
    - Dst: opt6_user_vendor_ptr
      Src: /src/dnsmasq/src/rfc3315.c:407,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:416,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:416,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:417,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:417,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:417,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:429,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:431,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:431,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:434,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:434,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:436,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:436,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:438,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:438,1
    - Dst: match_bytes
      Src: /src/dnsmasq/src/rfc3315.c:439,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:439,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:439,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:447,1
    - Dst: match_bytes
      Src: /src/dnsmasq/src/rfc3315.c:450,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:450,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:450,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:462,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/rfc3315.c:464,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:465,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:465,1
    - Dst: memcmp_masked
      Src: /src/dnsmasq/src/rfc3315.c:471,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:477,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:478,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:478,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:480,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:483,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:485,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:488,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:495,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:501,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/rfc3315.c:511,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:514,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:518,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:519,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:519,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:523,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/rfc3315.c:534,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc3315.c:549,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc3315.c:550,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:551,1
    - Dst: strip_hostname
      Src: /src/dnsmasq/src/rfc3315.c:559,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:561,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc3315.c:570,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc3315.c:570,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:571,1
    - Dst: CONFIG_CLID::CONFIG_CLID
      Src: /src/dnsmasq/src/rfc3315.c:571,1
    - Dst: hwaddr::hwaddr
      Src: /src/dnsmasq/src/rfc3315.c:571,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:592,1
    - Dst: find_config
      Src: /src/dnsmasq/src/rfc3315.c:596,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc3315.c:597,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc3315.c:604,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:612,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:622,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:644,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:648,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:649,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:652,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:652,1
    - Dst: lease6_reset
      Src: /src/dnsmasq/src/rfc3315.c:661,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:667,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:680,1
    - Dst: build_ia
      Src: /src/dnsmasq/src/rfc3315.c:687,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:691,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:691,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:694,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:694,1
    - Dst: address6_valid
      Src: /src/dnsmasq/src/rfc3315.c:696,1
    - Dst: config_valid
      Src: /src/dnsmasq/src/rfc3315.c:702,1
    - Dst: mark_config_used
      Src: /src/dnsmasq/src/rfc3315.c:705,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:706,1
    - Dst: address6_available
      Src: /src/dnsmasq/src/rfc3315.c:709,1
    - Dst: check_address
      Src: /src/dnsmasq/src/rfc3315.c:711,1
    - Dst: add_address
      Src: /src/dnsmasq/src/rfc3315.c:715,1
    - Dst: mark_context_used
      Src: /src/dnsmasq/src/rfc3315.c:716,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:717,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:725,1
    - Dst: config_valid
      Src: /src/dnsmasq/src/rfc3315.c:726,1
    - Dst: mark_config_used
      Src: /src/dnsmasq/src/rfc3315.c:728,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:729,1
    - Dst: add_address
      Src: /src/dnsmasq/src/rfc3315.c:735,1
    - Dst: mark_context_used
      Src: /src/dnsmasq/src/rfc3315.c:736,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:737,1
    - Dst: lease6_find_by_client
      Src: /src/dnsmasq/src/rfc3315.c:743,1
    - Dst: address6_available
      Src: /src/dnsmasq/src/rfc3315.c:746,1
    - Dst: add_address
      Src: /src/dnsmasq/src/rfc3315.c:748,1
    - Dst: mark_context_used
      Src: /src/dnsmasq/src/rfc3315.c:749,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:750,1
    - Dst: address6_allocate
      Src: /src/dnsmasq/src/rfc3315.c:756,1
    - Dst: add_address
      Src: /src/dnsmasq/src/rfc3315.c:759,1
    - Dst: mark_context_used
      Src: /src/dnsmasq/src/rfc3315.c:760,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:761,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:772,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:780,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:781,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:782,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:782,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:783,1
    - Dst: end_ia
      Src: /src/dnsmasq/src/rfc3315.c:786,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:787,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:792,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:793,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:794,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:794,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:795,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:799,1
    - Dst: put_opt6_char
      Src: /src/dnsmasq/src/rfc3315.c:800,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:800,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:801,1
    - Dst: add_options
      Src: /src/dnsmasq/src/rfc3315.c:802,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:807,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:808,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:809,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:809,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:810,1
    - Dst: log6_packet
      Src: /src/dnsmasq/src/rfc3315.c:818,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:818,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:829,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:835,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:835,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:840,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:846,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:853,1
    - Dst: build_ia
      Src: /src/dnsmasq/src/rfc3315.c:857,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:859,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:859,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:867,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:867,1
    - Dst: address6_valid
      Src: /src/dnsmasq/src/rfc3315.c:869,1
    - Dst: config_implies
      Src: /src/dnsmasq/src/rfc3315.c:870,1
    - Dst: address6_available
      Src: /src/dnsmasq/src/rfc3315.c:872,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:877,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:878,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:879,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:879,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:880,1
    - Dst: check_address
      Src: /src/dnsmasq/src/rfc3315.c:882,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:885,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:886,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:887,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:887,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:888,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:897,1
    - Dst: add_address
      Src: /src/dnsmasq/src/rfc3315.c:900,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:901,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:908,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:909,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:910,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:910,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:911,1
    - Dst: end_ia
      Src: /src/dnsmasq/src/rfc3315.c:915,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:916,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:921,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:922,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:923,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:923,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:924,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:929,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:930,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:931,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:931,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:932,1
    - Dst: log6_packet
      Src: /src/dnsmasq/src/rfc3315.c:933,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:933,1
    - Dst: add_options
      Src: /src/dnsmasq/src/rfc3315.c:936,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:949,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:951,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:957,1
    - Dst: build_ia
      Src: /src/dnsmasq/src/rfc3315.c:960,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:961,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:963,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:963,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:967,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:968,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:972,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:972,1
    - Dst: lease6_find
      Src: /src/dnsmasq/src/rfc3315.c:974,1
    - Dst: lease6_allocate
      Src: /src/dnsmasq/src/rfc3315.c:981,1
    - Dst: lease_set_iaid
      Src: /src/dnsmasq/src/rfc3315.c:983,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:992,1
    - Dst: log6_packet
      Src: /src/dnsmasq/src/rfc3315.c:995,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:995,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:997,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:998,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:999,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:999,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1000,1
    - Dst: address6_available
      Src: /src/dnsmasq/src/rfc3315.c:1007,1
    - Dst: address6_valid
      Src: /src/dnsmasq/src/rfc3315.c:1008,1
    - Dst: get_context_tag
      Src: /src/dnsmasq/src/rfc3315.c:1012,1
    - Dst: config_implies
      Src: /src/dnsmasq/src/rfc3315.c:1014,1
    - Dst: have_config
      Src: /src/dnsmasq/src/rfc3315.c:1014,1
    - Dst: calculate_times
      Src: /src/dnsmasq/src/rfc3315.c:1019,1
    - Dst: lease_set_expires
      Src: /src/dnsmasq/src/rfc3315.c:1021,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/rfc3315.c:1024,1
    - Dst: get_domain6
      Src: /src/dnsmasq/src/rfc3315.c:1027,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/rfc3315.c:1030,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1036,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1043,1
    - Dst: log6_packet
      Src: /src/dnsmasq/src/rfc3315.c:1047,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1049,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1051,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1052,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1053,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1054,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1055,1
    - Dst: end_ia
      Src: /src/dnsmasq/src/rfc3315.c:1058,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1059,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1065,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1066,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1067,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1067,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1068,1
    - Dst: add_options
      Src: /src/dnsmasq/src/rfc3315.c:1071,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1082,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1084,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:1088,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1090,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1090,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:1095,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1095,1
    - Dst: address6_valid
      Src: /src/dnsmasq/src/rfc3315.c:1097,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1100,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1100,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1105,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1114,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1115,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1116,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1116,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1116,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1117,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1124,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1125,1
    - Dst: get_domain6
      Src: /src/dnsmasq/src/rfc3315.c:1142,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1144,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1144,1
    - Dst: add_options
      Src: /src/dnsmasq/src/rfc3315.c:1148,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1158,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1160,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:1165,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1167,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1167,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:1173,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1173,1
    - Dst: lease6_find
      Src: /src/dnsmasq/src/rfc3315.c:1174,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc3315.c:1176,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1181,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1182,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1185,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1186,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1191,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1192,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1193,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1194,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1195,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1201,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1202,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1203,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1203,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1204,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1206,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1210,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1211,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1212,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1212,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1213,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1223,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1225,1
    - Dst: check_ia
      Src: /src/dnsmasq/src/rfc3315.c:1230,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1232,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1232,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:1239,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1239,1
    - Dst: config_implies
      Src: /src/dnsmasq/src/rfc3315.c:1241,1
    - Dst: prettyprint_time
      Src: /src/dnsmasq/src/rfc3315.c:1243,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:1244,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:1245,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1245,1
    - Dst: lease6_find
      Src: /src/dnsmasq/src/rfc3315.c:1255,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/rfc3315.c:1257,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1262,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1263,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1266,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1267,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1272,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1273,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1274,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1275,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1276,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1282,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1283,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1284,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1284,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1285,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1287,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1293,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:1294,1
    - Dst: put_opt6_string
      Src: /src/dnsmasq/src/rfc3315.c:1295,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1295,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1296,1
    - Dst: log_tags
      Src: /src/dnsmasq/src/rfc3315.c:1302,1
    - Dst: log6_opts
      Src: /src/dnsmasq/src/rfc3315.c:1310,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:1310,1
    CyclomaticComplexity: 204
    EdgeCount: 204
    ICount: 585
    argCount: 6
    argNames:
    - state
    - msg_type
    - inbuff
    - sz
    - is_unicast
    - now
    argTypes:
    - struct state*
    - int
    - unsigned char*
    - size_t
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 262
    functionDepth: 4
    functionLinenumber: 262
    functionLinenumberEnd: 1314
    functionName: dhcp6_no_relay
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - get_domain6
    - end_ia
    - put_opt6_char
    - end_opt6
    - hostname_isequal
    - add_options
    - opt6_uint
    - opt6_user_vendor_len
    - config_implies
    - log6_quiet
    - lease_prune
    - strlen
    - mark_context_used
    - new_opt6
    - address6_available
    - lease6_find
    - legal_hostname
    - strip_hostname
    - hwaddr::hwaddr
    - CONFIG_CLID::CONFIG_CLID
    - lease6_find_by_client
    - match_bytes
    - put_opt6_string
    - log6_packet
    - print_mac
    - opt6_find
    - opt6_user_vendor_next
    - put_opt6_long
    - opt6_len
    - lease_set_hostname
    - find_config
    - build_ia
    - add_address
    - memcmp_masked
    - opt6_ptr
    - memcpy
    - have_config
    - lease6_allocate
    - put_opt6
    - option_bool
    - opt6_user_vendor_ptr
    - lease6_reset
    - my_syslog
    - put_opt6_short
    - _
    - match_netid
    - get_context_tag
    - log6_opts
    - check_address
    - log_tags
    - mark_config_used
    - address6_valid
    - inet_ntop
    - lease_set_expires
    - run_tag_if
    - check_ia
    - lease_set_hwaddr
    - address6_allocate
    - prettyprint_time
    - opt6_next
    - memcmp
    - save_counter
    - config_valid
    - calculate_times
    - lease_set_iaid
    linkageType: ''
    returnType: int
    signature: int dhcp6_no_relay(struct state *state, int msg_type, unsigned char
      *inbuff, size_t sz, int is_unicast, time_t now)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: option_filter
      Src: /src/dnsmasq/src/rfc3315.c:1320,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1325,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1335,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1336,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1340,1
    - Dst: IN6_IS_ADDR_ULA_ZERO
      Src: /src/dnsmasq/src/rfc3315.c:1357,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1357,1
    - Dst: IN6_IS_ADDR_LINK_LOCAL_ZERO
      Src: /src/dnsmasq/src/rfc3315.c:1358,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1358,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1364,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1370,1
    - Dst: add_local_addrs
      Src: /src/dnsmasq/src/rfc3315.c:1372,1
    - Dst: IN6_IS_ADDR_ULA_ZERO
      Src: /src/dnsmasq/src/rfc3315.c:1375,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1377,1
    - Dst: IN6_IS_ADDR_LINK_LOCAL_ZERO
      Src: /src/dnsmasq/src/rfc3315.c:1380,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1382,1
    - Dst: IN6_IS_ADDR_MULTICAST
      Src: /src/dnsmasq/src/rfc3315.c:1392,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1393,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1395,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1396,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1397,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1400,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1403,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1408,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1410,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1411,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1417,1
    - Dst: add_local_addrs
      Src: /src/dnsmasq/src/rfc3315.c:1418,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1419,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1420,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1440,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1441,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1442,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1451,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1452,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:1473,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1486,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1487,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1492,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1493,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1494,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1496,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1505,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1508,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1510,1
    - Dst: expand
      Src: /src/dnsmasq/src/rfc3315.c:1511,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc3315.c:1514,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/rfc3315.c:1517,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1521,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:1526,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1529,1
    - Dst: option_string
      Src: /src/dnsmasq/src/rfc3315.c:1531,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1531,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc3315.c:1532,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1534,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1535,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1537,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1538,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:1541,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:1541,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 132
    argCount: 2
    argNames:
    - state
    - do_refresh
    argTypes:
    - struct state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1316
    functionDepth: 2
    functionLinenumber: 1316
    functionLinenumberEnd: 1547
    functionName: add_options
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - end_opt6
    - option_string
    - opt6_uint
    - strlen
    - new_opt6
    - IN6_IS_ADDR_UNSPECIFIED
    - add_local_addrs
    - do_rfc1035_name
    - opt6_find
    - put_opt6_long
    - IN6_IS_ADDR_MULTICAST
    - opt6_len
    - expand
    - put_opt6
    - option_bool
    - snprintf
    - my_syslog
    - match_netid
    - _
    - IN6_IS_ADDR_ULA_ZERO
    - option_filter
    - IN6_IS_ADDR_LINK_LOCAL_ZERO
    linkageType: ''
    returnType: struct dhcp_netid
    signature: struct dhcp_netid *add_options(struct state *state, int do_refresh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/rfc3315.c:1554,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc3315.c:1560,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1566,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 1
    argNames:
    - context
    argTypes:
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1549
    functionDepth: 2
    functionLinenumber: 1549
    functionLinenumberEnd: 1571
    functionName: add_local_addrs
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - put_opt6
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: int
    signature: int add_local_addrs(struct dhcp_context *context)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:1586,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - state
    - context
    argTypes:
    - struct state*
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1574
    functionDepth: 1
    functionLinenumber: 1574
    functionLinenumberEnd: 1592
    functionName: get_context_tag
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - match_netid
    linkageType: ''
    returnType: void
    signature: void get_context_tag(struct state *state, struct dhcp_context *context)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:1596,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1602,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1605,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1608,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1608,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1609,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1610,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1610,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - state
    - opt
    - endp
    - ia_option
    argTypes:
    - struct state*
    - void*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1594
    functionDepth: 1
    functionLinenumber: 1594
    functionLinenumberEnd: 1613
    functionName: check_ia
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - opt6_type
    - opt6_uint
    - opt6_find
    - opt6_len
    - opt6_ptr
    linkageType: ''
    returnType: int
    signature: int check_ia(struct state *state, void *opt, void **endp, void **ia_option)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1618,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1620,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:1626,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1628,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - state
    - t1cntr
    argTypes:
    - struct state*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1616
    functionDepth: 2
    functionLinenumber: 1616
    functionLinenumberEnd: 1633
    functionName: build_ia
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - put_opt6_long
    - save_counter
    - new_opt6
    linkageType: ''
    returnType: int
    signature: int build_ia(struct state *state, int *t1cntr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:1640,1
    - Dst: rand16
      Src: /src/dnsmasq/src/rfc3315.c:1645,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1653,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1654,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:1655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - t1cntr
    - min_time
    - do_fuzz
    argTypes:
    - int
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1635
    functionDepth: 3
    functionLinenumber: 1635
    functionLinenumberEnd: 1657
    functionName: end_ia
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - put_opt6_long
    - save_counter
    - rand16
    linkageType: ''
    returnType: void
    signature: void end_ia(int t1cntr, unsigned int min_time, int do_fuzz)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1663,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1669,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1670,1
    - Dst: calculate_times
      Src: /src/dnsmasq/src/rfc3315.c:1673,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1675,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1676,1
    - Dst: put_opt6_long
      Src: /src/dnsmasq/src/rfc3315.c:1677,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:1678,1
    - Dst: update_leases
      Src: /src/dnsmasq/src/rfc3315.c:1681,1
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/rfc3315.c:1683,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/rfc3315.c:1697,1
    - Dst: log6_quiet
      Src: /src/dnsmasq/src/rfc3315.c:1704,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 7
    argNames:
    - state
    - context
    - lease_time
    - ia_option
    - min_time
    - addr
    - now
    argTypes:
    - struct state*
    - struct dhcp_context*
    - unsigned int
    - void*
    - unsigned int*
    - struct in6_addr*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1659
    functionDepth: 2
    functionLinenumber: 1659
    functionLinenumberEnd: 1706
    functionName: add_address
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - end_opt6
    - lease6_find_by_addr
    - match_netid
    - opt6_uint
    - put_opt6_long
    - update_leases
    - calculate_times
    - log6_quiet
    - new_opt6
    - put_opt6
    linkageType: ''
    returnType: void
    signature: "void add_address(struct state *state, struct dhcp_context *context,
      unsigned int lease_time, void *ia_option, \n\t\t\tunsigned int *min_time, struct
      in6_addr *addr, time_t now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:1714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - addr
    argTypes:
    - struct state*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1708
    functionDepth: 1
    functionLinenumber: 1708
    functionLinenumberEnd: 1716
    functionName: mark_context_used
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    linkageType: ''
    returnType: void
    signature: void mark_context_used(struct state *state, struct in6_addr *addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:1721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - context
    - addr
    argTypes:
    - struct dhcp_context*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1723
    functionName: mark_config_used
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    linkageType: ''
    returnType: void
    signature: void mark_config_used(struct dhcp_context *context, struct in6_addr
      *addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/rfc3315.c:1730,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/rfc3315.c:1734,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - state
    - addr
    argTypes:
    - struct state*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1726
    functionDepth: 2
    functionLinenumber: 1726
    functionLinenumberEnd: 1739
    functionName: check_address
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - memcmp
    - lease6_find_by_addr
    linkageType: ''
    returnType: int
    signature: int check_address(struct state *state, struct in6_addr *addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/rfc3315.c:1760,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/rfc3315.c:1760,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:1762,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:1765,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - config
    - context
    - addr
    argTypes:
    - struct dhcp_config*
    - struct dhcp_context*
    - struct in6_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1770
    functionName: config_implies
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    - addr6part
    - setaddr6part
    linkageType: ''
    returnType: struct addrlist
    signature: struct addrlist *config_implies(struct dhcp_config *config, struct
      dhcp_context *context, struct in6_addr *addr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/rfc3315.c:1782,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/rfc3315.c:1784,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/rfc3315.c:1797,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/rfc3315.c:1804,1
    - Dst: check_address
      Src: /src/dnsmasq/src/rfc3315.c:1806,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 5
    argNames:
    - config
    - context
    - addr
    - state
    - now
    argTypes:
    - struct dhcp_config*
    - struct dhcp_context*
    - struct in6_addr*
    - struct state*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1772
    functionDepth: 3
    functionLinenumber: 1772
    functionLinenumberEnd: 1812
    functionName: config_valid
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - is_same_net6
    - setaddr6part
    - difftime
    - addr6part
    - check_address
    linkageType: ''
    returnType: int
    signature: int config_valid(struct dhcp_config *config, struct dhcp_context *context,
      struct in6_addr *addr, struct state *state, time_t now)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 5
    argNames:
    - context
    - min_time
    - valid_timep
    - preferred_timep
    - lease_time
    argTypes:
    - struct dhcp_context*
    - unsigned int*
    - unsigned int*
    - unsigned int*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1830
    functionDepth: 0
    functionLinenumber: 1830
    functionLinenumberEnd: 1875
    functionName: calculate_times
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void calculate_times(struct dhcp_context *context, unsigned int *min_time,
      unsigned int *valid_timep, \n\t\t\t    unsigned int *preferred_timep, unsigned
      int lease_time)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lease6_find_by_addr
      Src: /src/dnsmasq/src/rfc3315.c:1879,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/rfc3315.c:1881,1
    - Dst: lease6_allocate
      Src: /src/dnsmasq/src/rfc3315.c:1887,1
    - Dst: lease_set_expires
      Src: /src/dnsmasq/src/rfc3315.c:1891,1
    - Dst: lease_set_iaid
      Src: /src/dnsmasq/src/rfc3315.c:1892,1
    - Dst: lease_set_hwaddr
      Src: /src/dnsmasq/src/rfc3315.c:1893,1
    - Dst: lease_set_interface
      Src: /src/dnsmasq/src/rfc3315.c:1894,1
    - Dst: get_domain6
      Src: /src/dnsmasq/src/rfc3315.c:1897,1
    - Dst: lease_set_hostname
      Src: /src/dnsmasq/src/rfc3315.c:1900,1
    - Dst: free
      Src: /src/dnsmasq/src/rfc3315.c:1909,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1914,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1916,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1916,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:1919,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:1919,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1920,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1920,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1922,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1923,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1923,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1926,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1926,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1926,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1930,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1931,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1934,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1936,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1937,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1940,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:1941,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc3315.c:1941,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1944,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1946,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1947,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1947,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1947,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1949,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1953,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1957,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1957,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/rfc3315.c:1967,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1970,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1970,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:1976,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1978,1
    - Dst: strlen
      Src: /src/dnsmasq/src/rfc3315.c:1978,1
    - Dst: opt6_find
      Src: /src/dnsmasq/src/rfc3315.c:1980,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1982,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1982,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1983,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:1983,1
    - Dst: lease_add_extradata
      Src: /src/dnsmasq/src/rfc3315.c:1984,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:1984,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:1984,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 62
    argCount: 5
    argNames:
    - state
    - context
    - addr
    - lease_time
    - now
    argTypes:
    - struct state*
    - struct dhcp_context*
    - struct in6_addr*
    - unsigned int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1990
      start: 1877
    functionDepth: 4
    functionLinenumber: 1877
    functionLinenumberEnd: 1990
    functionName: update_leases
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - get_domain6
    - ntohs
    - lease6_find_by_addr
    - lease_set_interface
    - opt6_uint
    - strlen
    - lease_add_extradata
    - sprintf
    - opt6_find
    - opt6_len
    - lease_set_hostname
    - strcmp
    - opt6_ptr
    - lease6_allocate
    - free
    - lease_set_expires
    - inet_ntop
    - run_tag_if
    - lease_set_hwaddr
    - opt6_next
    - lease_set_iaid
    linkageType: ''
    returnType: void
    signature: void update_leases(struct state *state, struct dhcp_context *context,
      struct in6_addr *addr, unsigned int lease_time, time_t now)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:1999,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:2002,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:2004,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:2010,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2011,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2011,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2011,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2013,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:2017,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2017,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2019,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2026,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2026,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:2027,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:2028,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2029,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2029,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2031,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/rfc3315.c:2035,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2035,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2036,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2036,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2036,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2037,1
    - Dst: option_string
      Src: /src/dnsmasq/src/rfc3315.c:2044,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2044,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2044,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:2047,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2048,1
    - Dst: log6_opts
      Src: /src/dnsmasq/src/rfc3315.c:2051,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2051,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2051,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 4
    argNames:
    - nest
    - xid
    - start_opts
    - end_opts
    argTypes:
    - int
    - unsigned int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 1994
    functionDepth: 1
    functionLinenumber: 1994
    functionLinenumberEnd: 2053
    functionName: log6_opts
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 2
    functionsReached:
    - opt6_type
    - option_bool
    - option_string
    - sprintf
    - memcpy
    - my_syslog
    - opt6_next
    - opt6_uint
    - log6_opts
    - opt6_len
    - opt6_ptr
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void log6_opts(int nest, unsigned int xid, void *start_opts, void *end_opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:2057,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:2057,1
    - Dst: log6_packet
      Src: /src/dnsmasq/src/rfc3315.c:2058,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - state
    - type
    - addr
    - string
    argTypes:
    - struct state*
    - char*
    - struct in6_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2055
    functionDepth: 1
    functionLinenumber: 2055
    functionLinenumberEnd: 2059
    functionName: log6_quiet
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 2
    functionsReached:
    - option_bool
    - log6_packet
    linkageType: ''
    returnType: void
    signature: void log6_quiet(struct state *state, char *type, struct in6_addr *addr,
      char *string)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: print_mac
      Src: /src/dnsmasq/src/rfc3315.c:2069,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:2073,1
    - Dst: strcat
      Src: /src/dnsmasq/src/rfc3315.c:2074,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:2079,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:2080,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:2088,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - state
    - type
    - addr
    - string
    argTypes:
    - struct state*
    - char*
    - struct in6_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2061
    functionDepth: 1
    functionLinenumber: 2061
    functionLinenumberEnd: 2094
    functionName: log6_packet
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 2
    functionsReached:
    - strcat
    - option_bool
    - my_syslog
    - print_mac
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void log6_packet(struct state *state, char *type, struct in6_addr *addr,
      char *string)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc3315.c:2110,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc3315.c:2111,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - opts
    - end
    - search
    - minsize
    argTypes:
    - uint8_t*
    - uint8_t*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2121
      start: 2096
    functionDepth: 0
    functionLinenumber: 2096
    functionLinenumberEnd: 2121
    functionName: opt6_find
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 5
    functionsReached:
    - GETSHORT
    linkageType: ''
    returnType: void
    signature: void *opt6_find (uint8_t *opts, uint8_t *end, unsigned int search,
      unsigned int minsize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/rfc3315.c:2131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - opts
    - end
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2123
    functionDepth: 0
    functionLinenumber: 2123
    functionLinenumberEnd: 2137
    functionName: opt6_next
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 4
    functionsReached:
    - GETSHORT
    linkageType: ''
    returnType: void
    signature: void *opt6_next(uint8_t *opts, uint8_t *end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - opt
    - offset
    - size
    argTypes:
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2139
    functionDepth: 1
    functionLinenumber: 2139
    functionLinenumberEnd: 2150
    functionName: opt6_uint
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 7
    functionsReached:
    - opt6_ptr
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int opt6_uint(unsigned char *opt, int offset, int size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/dnsmasq/src/rfc3315.c:2172,1
    - Dst: get_client_mac
      Src: /src/dnsmasq/src/rfc3315.c:2173,1
    - Dst: reset_counter
      Src: /src/dnsmasq/src/rfc3315.c:2181,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2184,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2189,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2194,1
    - Dst: put_opt6_short
      Src: /src/dnsmasq/src/rfc3315.c:2195,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2196,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2197,1
    - Dst: new_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2200,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2201,1
    - Dst: end_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2202,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2209,1
    - Dst: htons
      Src: /src/dnsmasq/src/rfc3315.c:2216,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc3315.c:2220,1
    - Dst: strchr
      Src: /src/dnsmasq/src/rfc3315.c:2223,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/rfc3315.c:2224,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/rfc3315.c:2225,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:2227,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:2227,1
    - Dst: dump_packet_udp
      Src: /src/dnsmasq/src/rfc3315.c:2233,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:2233,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/rfc3315.c:2236,1
    - Dst: sendto
      Src: /src/dnsmasq/src/rfc3315.c:2236,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/rfc3315.c:2236,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/rfc3315.c:2237,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/rfc3315.c:2239,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:2241,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc3315.c:2242,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/rfc3315.c:2243,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:2243,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/rfc3315.c:2245,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/rfc3315.c:2246,1
    - Dst: _
      Src: /src/dnsmasq/src/rfc3315.c:2246,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 53
    argCount: 5
    argNames:
    - iface_index
    - sz
    - peer_address
    - scope_id
    - now
    argTypes:
    - int
    - ssize_t
    - struct in6_addr*
    - u32
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2152
    functionDepth: 2
    functionLinenumber: 2152
    functionLinenumberEnd: 2252
    functionName: relay_upstream6
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - end_opt6
    - sa_len
    - retry_send
    - get_client_mac
    - dump_packet_udp
    - reset_counter
    - new_opt6
    - setsockopt
    - inet_pton
    - htons
    - memcpy
    - put_opt6
    - option_bool
    - snprintf
    - put_opt6_short
    - my_syslog
    - _
    - inet_ntop
    - if_nametoindex
    - IN6_ARE_ADDR_EQUAL
    - save_counter
    - strchr
    - sendto
    linkageType: ''
    returnType: int
    signature: "int relay_upstream6(int iface_index, ssize_t sz, \n\t\t    struct
      in6_addr *peer_address, u32 scope_id, time_t now)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2266,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/rfc3315.c:2269,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/rfc3315.c:2270,1
    - Dst: reset_counter
      Src: /src/dnsmasq/src/rfc3315.c:2273,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:2279,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:2280,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2280,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2282,1
    - Dst: put_opt6
      Src: /src/dnsmasq/src/rfc3315.c:2283,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2283,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2283,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2284,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc3315.c:2289,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/rfc3315.c:2293,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2299,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2300,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2300,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:2302,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:2303,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2303,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2305,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2306,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2306,1
    - Dst: opt6_next
      Src: /src/dnsmasq/src/rfc3315.c:2309,1
    - Dst: opt6_type
      Src: /src/dnsmasq/src/rfc3315.c:2311,1
    - Dst: opt6_len
      Src: /src/dnsmasq/src/rfc3315.c:2311,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2311,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/rfc3315.c:2314,1
    - Dst: opt6_uint
      Src: /src/dnsmasq/src/rfc3315.c:2320,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/rfc3315.c:2321,1
    - Dst: opt6_ptr
      Src: /src/dnsmasq/src/rfc3315.c:2321,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 41
    argCount: 3
    argNames:
    - peer
    - sz
    - arrival_interface
    argTypes:
    - struct sockaddr_in6*
    - ssize_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2335
      start: 2254
    functionDepth: 2
    functionLinenumber: 2254
    functionLinenumberEnd: 2335
    functionName: relay_reply6
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 1
    functionsReached:
    - wildcard_match
    - opt6_type
    - ntohs
    - whine_malloc
    - opt6_next
    - IN6_ARE_ADDR_EQUAL
    - opt6_uint
    - opt6_len
    - reset_counter
    - opt6_ptr
    - memcpy
    - put_opt6
    linkageType: ''
    returnType: int
    signature: int relay_reply6(struct sockaddr_in6 *peer, ssize_t sz, char *arrival_interface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: queue_relay_snoop
      Src: /src/dnsmasq/src/rfc3315.c:2350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2355
      start: 2338
    functionDepth: 3
    functionLinenumber: 2338
    functionLinenumberEnd: 2355
    functionName: do_snoop_script_run
    functionSourceFile: /src/dnsmasq/src/rfc3315.c
    functionUses: 0
    functionsReached:
    - queue_relay_snoop
    linkageType: ''
    returnType: int
    signature: int do_snoop_script_run(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dnsmasq/src/dump.c:62,1
    - Dst: creat
      Src: /src/dnsmasq/src/dump.c:66,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:67,1
    - Dst: die
      Src: /src/dnsmasq/src/dump.c:68,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:68,1
    - Dst: S_ISFIFO
      Src: /src/dnsmasq/src/dump.c:70,1
    - Dst: open
      Src: /src/dnsmasq/src/dump.c:74,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:75,1
    - Dst: die
      Src: /src/dnsmasq/src/dump.c:76,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:76,1
    - Dst: open
      Src: /src/dnsmasq/src/dump.c:78,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:79,1
    - Dst: die
      Src: /src/dnsmasq/src/dump.c:80,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:80,1
    - Dst: die
      Src: /src/dnsmasq/src/dump.c:82,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:82,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:86,1
    - Dst: lseek
      Src: /src/dnsmasq/src/dump.c:88,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 92
    functionName: dump_init
    functionSourceFile: /src/dnsmasq/src/dump.c
    functionUses: 0
    functionsReached:
    - S_ISFIFO
    - stat
    - die
    - _
    - read_write
    - creat
    - open
    - lseek
    linkageType: ''
    returnType: void
    signature: void dump_init(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockname
      Src: /src/dnsmasq/src/dump.c:111,1
    - Dst: do_dump_packet
      Src: /src/dnsmasq/src/dump.c:120,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 6
    argNames:
    - mask
    - packet
    - len
    - src
    - dst
    - fd
    argTypes:
    - int
    - void*
    - size_t
    - union mysockaddr*
    - union mysockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 122
    functionName: dump_packet_udp
    functionSourceFile: /src/dnsmasq/src/dump.c
    functionUses: 11
    functionsReached:
    - do_dump_packet
    - getsockname
    linkageType: ''
    returnType: void
    signature: "void dump_packet_udp(int mask, void *packet, size_t len,\n\t\t     union
      mysockaddr *src, union mysockaddr *dst, int fd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_dump_packet
      Src: /src/dnsmasq/src/dump.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 5
    argNames:
    - mask
    - packet
    - len
    - src
    - dst
    argTypes:
    - int
    - void*
    - size_t
    - union mysockaddr*
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: dump_packet_icmp
    functionSourceFile: /src/dnsmasq/src/dump.c
    functionUses: 2
    functionsReached:
    - do_dump_packet
    linkageType: ''
    returnType: void
    signature: "void dump_packet_icmp(int mask, void *packet, size_t len,\n\t\t      union
      mysockaddr *src, union mysockaddr *dst)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:155,1
    - Dst: memset
      Src: /src/dnsmasq/src/dump.c:166,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:172,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:176,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dump.c:181,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dump.c:187,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dump.c:194,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/dump.c:195,1
    - Dst: memset
      Src: /src/dnsmasq/src/dump.c:202,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:209,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:212,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:251,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:252,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:255,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:273,1
    - Dst: htons
      Src: /src/dnsmasq/src/dump.c:274,1
    - Dst: gettimeofday
      Src: /src/dnsmasq/src/dump.c:286,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:291,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:292,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:293,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dump.c:294,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dump.c:295,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:295,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dump.c:296,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dump.c:297,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:297,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dump.c:299,1
    - Dst: _
      Src: /src/dnsmasq/src/dump.c:299,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 93
    argCount: 7
    argNames:
    - mask
    - packet
    - len
    - src
    - dst
    - port
    - proto
    argTypes:
    - int
    - void*
    - size_t
    - union mysockaddr*
    - union mysockaddr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 301
    functionName: do_dump_packet
    functionSourceFile: /src/dnsmasq/src/dump.c
    functionUses: 2
    functionsReached:
    - memset
    - gettimeofday
    - option_bool
    - ntohs
    - my_syslog
    - _
    - htons
    - read_write
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void do_dump_packet(int mask, void *packet, size_t len,\n\t\t\t   union
      mysockaddr *src, union mysockaddr *dst, int port, int proto)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/log.c:62,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/log.c:67,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/log.c:75,1
    - Dst: dup
      Src: /src/dnsmasq/src/log.c:79,1
    - Dst: log_reopen
      Src: /src/dnsmasq/src/log.c:85,1
    - Dst: send_event
      Src: /src/dnsmasq/src/log.c:87,1
    - Dst: _exit
      Src: /src/dnsmasq/src/log.c:88,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/log.c:95,1
    - Dst: getgid
      Src: /src/dnsmasq/src/log.c:114,1
    - Dst: fstat
      Src: /src/dnsmasq/src/log.c:114,1
    - Dst: fchmod
      Src: /src/dnsmasq/src/log.c:116,1
    - Dst: fchown
      Src: /src/dnsmasq/src/log.c:117,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 2
    argNames:
    - ent_pw
    - errfd
    argTypes:
    - struct passwd*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 122
    functionName: log_start
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 0
    functionsReached:
    - log_reopen
    - option_bool
    - dup
    - fstat
    - send_event
    - _exit
    - safe_malloc
    - fchown
    - fchmod
    - strcmp
    - getgid
    linkageType: ''
    returnType: int
    signature: int log_start(struct passwd *ent_pw, int errfd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/dnsmasq/src/log.c:129,1
    - Dst: open
      Src: /src/dnsmasq/src/log.c:134,1
    - Dst: socket
      Src: /src/dnsmasq/src/log.c:144,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/log.c:147,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/log.c:148,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - log_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 154
    functionName: log_reopen
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 1
    functionsReached:
    - open
    - socket
    - close
    - fcntl
    linkageType: ''
    returnType: int
    signature: int log_reopen(char *log_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 162
    functionName: free_entry
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void free_entry(void)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/dnsmasq/src/log.c:184,1
    - Dst: free_entry
      Src: /src/dnsmasq/src/log.c:186,1
    - Dst: write
      Src: /src/dnsmasq/src/log.c:192,1
    - Dst: free_entry
      Src: /src/dnsmasq/src/log.c:198,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/log.c:203,1
    - Dst: _
      Src: /src/dnsmasq/src/log.c:203,1
    - Dst: log_reopen
      Src: /src/dnsmasq/src/log.c:228,1
    - Dst: strlen
      Src: /src/dnsmasq/src/log.c:245,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/log.c:248,1
    - Dst: connect
      Src: /src/dnsmasq/src/log.c:251,1
    - Dst: log_reopen
      Src: /src/dnsmasq/src/log.c:272,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/log.c:281,1
    - Dst: _
      Src: /src/dnsmasq/src/log.c:281,1
    - Dst: strerror
      Src: /src/dnsmasq/src/log.c:281,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 284
    functionName: log_write
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 0
    functionsReached:
    - log_reopen
    - free_entry
    - getpid
    - safe_strncpy
    - my_syslog
    - _
    - write
    - connect
    - strerror
    - strlen
    linkageType: ''
    returnType: void
    signature: void log_write(void)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/dnsmasq/src/log.c:297,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/log.c:308,1
    - Dst: LOG_PRI
      Src: /src/dnsmasq/src/log.c:314,1
    - Dst: fprintf
      Src: /src/dnsmasq/src/log.c:322,1
    - Dst: va_start
      Src: /src/dnsmasq/src/log.c:323,1
    - Dst: vfprintf
      Src: /src/dnsmasq/src/log.c:324,1
    - Dst: va_end
      Src: /src/dnsmasq/src/log.c:325,1
    - Dst: fputc
      Src: /src/dnsmasq/src/log.c:326,1
    - Dst: va_start
      Src: /src/dnsmasq/src/log.c:345,1
    - Dst: __android_log_vprint
      Src: /src/dnsmasq/src/log.c:346,1
    - Dst: va_end
      Src: /src/dnsmasq/src/log.c:347,1
    - Dst: openlog
      Src: /src/dnsmasq/src/log.c:355,1
    - Dst: va_start
      Src: /src/dnsmasq/src/log.c:358,1
    - Dst: vsyslog
      Src: /src/dnsmasq/src/log.c:359,1
    - Dst: va_end
      Src: /src/dnsmasq/src/log.c:360,1
    - Dst: malloc
      Src: /src/dnsmasq/src/log.c:368,1
    - Dst: time
      Src: /src/dnsmasq/src/log.c:386,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/log.c:389,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/log.c:392,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/log.c:393,1
    - Dst: ctime
      Src: /src/dnsmasq/src/log.c:393,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/log.c:395,1
    - Dst: va_start
      Src: /src/dnsmasq/src/log.c:398,1
    - Dst: vsnprintf
      Src: /src/dnsmasq/src/log.c:399,1
    - Dst: va_end
      Src: /src/dnsmasq/src/log.c:400,1
    - Dst: log_write
      Src: /src/dnsmasq/src/log.c:408,1
    - Dst: nanosleep
      Src: /src/dnsmasq/src/log.c:437,1
    - Dst: log_write
      Src: /src/dnsmasq/src/log.c:440,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 84
    argCount: 2
    argNames:
    - priority
    - format
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 443
    functionName: my_syslog
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 60
    functionsReached:
    - openlog
    - time
    - vsnprintf
    - malloc
    - option_bool
    - fprintf
    - fputc
    - va_start
    - getpid
    - vsyslog
    - sprintf
    - nanosleep
    - va_end
    - vfprintf
    - ctime
    - LOG_PRI
    - __android_log_vprint
    - log_write
    linkageType: ''
    returnType: void
    signature: void my_syslog(int priority, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: poll_listen
      Src: /src/dnsmasq/src/log.c:448,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: set_log_writer
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 0
    functionsReached:
    - poll_listen
    linkageType: ''
    returnType: void
    signature: void set_log_writer(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: poll_check
      Src: /src/dnsmasq/src/log.c:453,1
    - Dst: log_write
      Src: /src/dnsmasq/src/log.c:454,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 3
    argCount: 1
    argNames:
    - force
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 455
    functionName: check_log_writer
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 1
    functionsReached:
    - log_write
    - poll_check
    linkageType: ''
    returnType: void
    signature: void check_log_writer(int force)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_write
      Src: /src/dnsmasq/src/log.c:464,1
    - Dst: close
      Src: /src/dnsmasq/src/log.c:467,1
    - Dst: nanosleep
      Src: /src/dnsmasq/src/log.c:472,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 474
    functionName: flush_log
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 0
    functionsReached:
    - nanosleep
    - close
    - log_write
    linkageType: ''
    returnType: void
    signature: void flush_log(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/dnsmasq/src/log.c:478,1
    - Dst: fputc
      Src: /src/dnsmasq/src/log.c:486,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/log.c:488,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/log.c:490,1
    - Dst: _
      Src: /src/dnsmasq/src/log.c:490,1
    - Dst: flush_log
      Src: /src/dnsmasq/src/log.c:491,1
    - Dst: exit
      Src: /src/dnsmasq/src/log.c:493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - message
    - arg1
    - exit_code
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 476
    functionDepth: 3
    functionLinenumber: 476
    functionLinenumberEnd: 494
    functionName: die
    functionSourceFile: /src/dnsmasq/src/log.c
    functionUses: 17
    functionsReached:
    - fputc
    - exit
    - my_syslog
    - flush_log
    - _
    - strerror
    linkageType: ''
    returnType: void
    signature: void die(char *message, char *arg1, int exit_code)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 633
    functionName: hide_meta
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char hide_meta(char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cr
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 643
    functionName: unhide_meta
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char unhide_meta(char cr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unhide_meta
      Src: /src/dnsmasq/src/option.c:649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - cp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 650
    functionName: unhide_metas
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - unhide_meta
    linkageType: ''
    returnType: void
    signature: void unhide_metas(char *cp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/option.c:658,1
    - Dst: longjmp
      Src: /src/dnsmasq/src/option.c:660,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/option.c:663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 666
    functionName: opt_malloc
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - longjmp
    - safe_malloc
    - whine_malloc
    linkageType: ''
    returnType: void
    signature: void *opt_malloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:673,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:675,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:676,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:679,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 683
    functionName: opt_string_alloc
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - unhide_metas
    - strlen
    - memcpy
    - opt_malloc
    linkageType: ''
    returnType: char
    signature: char *opt_string_alloc(const char *cp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 705
    functionName: split_chr
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *split_chr(char *s, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: split
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - split_chr
    linkageType: ''
    returnType: char
    signature: char *split(char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:720,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:721,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:723,1
    - Dst: canonicalise
      Src: /src/dnsmasq/src/option.c:724,1
    - Dst: longjmp
      Src: /src/dnsmasq/src/option.c:727,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:729,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:729,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 712
    functionDepth: 4
    functionLinenumber: 712
    functionLinenumberEnd: 733
    functionName: canonicalise_opt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - unhide_metas
    - longjmp
    - strlen
    - die
    - _
    - canonicalise
    - opt_malloc
    linkageType: ''
    returnType: char
    signature: char *canonicalise_opt(char *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:742,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - a
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 749
    functionName: numeric_check
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - unhide_metas
    linkageType: ''
    returnType: int
    signature: int numeric_check(char *a)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: numeric_check
      Src: /src/dnsmasq/src/option.c:753,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:755,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - res
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 751
    functionDepth: 3
    functionLinenumber: 751
    functionLinenumberEnd: 757
    functionName: atoi_check
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - atoi
    - numeric_check
    linkageType: ''
    returnType: int
    signature: int atoi_check(char *a, int *res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: numeric_check
      Src: /src/dnsmasq/src/option.c:763,1
    - Dst: strtoul
      Src: /src/dnsmasq/src/option.c:765,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - a
    - res
    argTypes:
    - char*
    - u32*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 759
    functionDepth: 3
    functionLinenumber: 759
    functionLinenumberEnd: 772
    functionName: strtoul_check
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strtoul
    - numeric_check
    linkageType: ''
    returnType: int
    signature: int strtoul_check(char *a, u32 *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - a
    - res
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 774
    functionDepth: 4
    functionLinenumber: 774
    functionLinenumberEnd: 782
    functionName: atoi_check16
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - atoi_check
    linkageType: ''
    returnType: int
    signature: int atoi_check16(char *a, int *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:787,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - a
    - res
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 785
    functionDepth: 4
    functionLinenumber: 785
    functionLinenumberEnd: 793
    functionName: atoi_check8
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - atoi_check
    linkageType: ''
    returnType: int
    signature: int atoi_check8(char *a, int *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:799,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:803,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:804,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:807,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - name
    - txt
    - stat
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 797
    functionDepth: 4
    functionLinenumber: 797
    functionLinenumberEnd: 815
    functionName: add_txt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - opt_string_alloc
    - strlen
    - memcpy
    - opt_malloc
    linkageType: ''
    returnType: void
    signature: void add_txt(char *name, char *txt, int stat)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:835,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:835,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:837,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:837,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:839,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:839,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:856,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:858,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:860,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:861,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/option.c:865,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:868,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:870,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:870,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:871,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 873
    functionName: do_usage
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - safe_strncpy
    - printf
    - sprintf
    - _
    linkageType: ''
    returnType: void
    signature: void do_usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 876
    functionName: ret_err
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ret_err(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - m
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 877
    functionName: ret_err_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ret_err_free(x,m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 877
    functionDepth: 0
    functionLinenumber: 877
    functionLinenumberEnd: 878
    functionName: goto_err
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: goto_err(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:881,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:883,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - addr
    argTypes:
    - char*
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 889
    functionName: parse_mysockaddr
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - _
    linkageType: ''
    returnType: char
    signature: char *parse_mysockaddr(char *arg, union mysockaddr *addr)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:898,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:903,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:912,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:913,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:914,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:915,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:917,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:918,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:919,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:921,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:924,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/option.c:929,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:932,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:937,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:939,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:945,1
    - Dst: getaddrinfo
      Src: /src/dnsmasq/src/option.c:972,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:988,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:990,1
    - Dst: gai_strerror
      Src: /src/dnsmasq/src/option.c:990,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - arg
    - sdetails
    argTypes:
    - char*
    - struct server_details*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 891
    functionDepth: 5
    functionLinenumber: 891
    functionLinenumberEnd: 996
    functionName: parse_server
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 1
    functionsReached:
    - memset
    - inet_pton
    - safe_strncpy
    - _
    - gai_strerror
    - split_chr
    - getaddrinfo
    - atoi_check16
    - strcmp
    linkageType: ''
    returnType: char
    signature: char *parse_server(char *arg, struct server_details *sdetails)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1002,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1008,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1014,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:1015,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:1017,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1024,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1030,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/option.c:1033,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1035,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/option.c:1043,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1044,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1046,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1049,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:1060,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:1061,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:1063,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1070,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1076,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/option.c:1079,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1081,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1088,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 59
    argCount: 1
    argNames:
    - sdetails
    argTypes:
    - struct server_details*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 998
    functionDepth: 1
    functionLinenumber: 998
    functionLinenumberEnd: 1091
    functionName: parse_server_addr
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 1
    functionsReached:
    - if_nametoindex
    - inet_pton
    - safe_strncpy
    - _
    - htons
    linkageType: ''
    returnType: char
    signature: char *parse_server_addr(struct server_details *sdetails)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:1103,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:1107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - sdetails
    argTypes:
    - struct server_details*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1093
    functionDepth: 0
    functionLinenumber: 1093
    functionLinenumberEnd: 1124
    functionName: parse_server_next
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 1
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: int
    signature: int parse_server_next(struct server_details *sdetails)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:1138,1
    - Dst: parse_server
      Src: /src/dnsmasq/src/option.c:1146,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1157,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:1180,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:1183,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:1187,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1188,1
    - Dst: parse_server_next
      Src: /src/dnsmasq/src/option.c:1195,1
    - Dst: parse_server_addr
      Src: /src/dnsmasq/src/option.c:1197,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:1200,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1201,1
    - Dst: freeaddrinfo
      Src: /src/dnsmasq/src/option.c:1205,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - from_file
    - server
    - addr4
    - size
    argTypes:
    - int
    - char*
    - struct in_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1126
    functionDepth: 6
    functionLinenumber: 1126
    functionLinenumberEnd: 1210
    functionName: domain_rev4
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - memset
    - parse_server_addr
    - sprintf
    - add_update_server
    - _
    - parse_server
    - parse_server_next
    - freeaddrinfo
    linkageType: ''
    returnType: char
    signature: char *domain_rev4(int from_file, char *server, struct in_addr *addr4,
      int size)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:1224,1
    - Dst: parse_server
      Src: /src/dnsmasq/src/option.c:1232,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1243,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:1268,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:1271,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:1275,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1276,1
    - Dst: parse_server_next
      Src: /src/dnsmasq/src/option.c:1283,1
    - Dst: parse_server_addr
      Src: /src/dnsmasq/src/option.c:1285,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:1288,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1289,1
    - Dst: freeaddrinfo
      Src: /src/dnsmasq/src/option.c:1293,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 4
    argNames:
    - from_file
    - server
    - addr6
    - size
    argTypes:
    - int
    - char*
    - struct in6_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1212
    functionDepth: 6
    functionLinenumber: 1212
    functionLinenumberEnd: 1298
    functionName: domain_rev6
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - memset
    - parse_server_addr
    - sprintf
    - add_update_server
    - _
    - parse_server
    - parse_server_next
    - freeaddrinfo
    linkageType: ''
    returnType: char
    signature: char *domain_rev6(int from_file, char *server, struct in6_addr *addr6,
      int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:1302,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:1307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ifname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1300
    functionDepth: 4
    functionLinenumber: 1300
    functionLinenumberEnd: 1309
    functionName: if_names_add
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - opt_string_alloc
    - opt_malloc
    linkageType: ''
    returnType: void
    signature: void if_names_add(const char *ifname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1315,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1315,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1313
    functionDepth: 0
    functionLinenumber: 1313
    functionLinenumberEnd: 1319
    functionName: is_tag_prefix
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: int
    signature: int is_tag_prefix(char *arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1321
    functionDepth: 0
    functionLinenumber: 1321
    functionLinenumberEnd: 1327
    functionName: set_prefix
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: char
    signature: char *set_prefix(char *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:1332,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:1333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - net
    - next
    argTypes:
    - char*
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1329
    functionDepth: 4
    functionLinenumber: 1329
    functionLinenumberEnd: 1336
    functionName: dhcp_netid_create
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - opt_string_alloc
    - opt_malloc
    linkageType: ''
    returnType: struct dhcp_netid
    signature: struct dhcp_netid *dhcp_netid_create(const char *net, struct dhcp_netid
      *next)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1344,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - nid
    argTypes:
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1338
    functionDepth: 0
    functionLinenumber: 1338
    functionLinenumberEnd: 1347
    functionName: dhcp_netid_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dhcp_netid_free(struct dhcp_netid *nid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_tag_prefix
      Src: /src/dnsmasq/src/option.c:1355,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1357,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:1358,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:1363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1351
    functionDepth: 5
    functionLinenumber: 1351
    functionLinenumberEnd: 1367
    functionName: dhcp_tags
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - dhcp_netid_free
    - split
    - is_tag_prefix
    - dhcp_netid_create
    linkageType: ''
    returnType: struct dhcp_netid
    signature: struct dhcp_netid *dhcp_tags(char **arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1380,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1381,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - netid
    argTypes:
    - struct dhcp_netid_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1384
    functionName: dhcp_netid_list_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dhcp_netid_list_free(struct dhcp_netid_list *netid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1396,1
    - Dst: dhcp_netid_list_free
      Src: /src/dnsmasq/src/option.c:1399,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:1400,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1403,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1405,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1415,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1420,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct dhcp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1422
      start: 1386
    functionDepth: 1
    functionLinenumber: 1386
    functionLinenumberEnd: 1422
    functionName: dhcp_config_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - free
    - dhcp_netid_free
    - dhcp_netid_list_free
    linkageType: ''
    returnType: void
    signature: void dhcp_config_free(struct dhcp_config *config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:1428,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1429,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1431,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1435
    functionName: dhcp_context_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - free
    - dhcp_netid_free
    linkageType: ''
    returnType: void
    signature: void dhcp_context_free(struct dhcp_context *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1440,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:1441,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1442,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1443,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - opt
    argTypes:
    - struct dhcp_opt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1444
    functionName: dhcp_opt_free
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - free
    - dhcp_netid_free
    linkageType: ''
    returnType: void
    signature: void dhcp_opt_free(struct dhcp_opt *opt)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:1449,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1465,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:1473,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1479,1
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1481,1
    - Dst: lookup_dhcp_opt
      Src: /src/dnsmasq/src/option.c:1481,1
    - Dst: lookup_dhcp_len
      Src: /src/dnsmasq/src/option.c:1483,1
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1483,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1491,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:1499,1
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1505,1
    - Dst: lookup_dhcp_opt
      Src: /src/dnsmasq/src/option.c:1505,1
    - Dst: lookup_dhcp_len
      Src: /src/dnsmasq/src/option.c:1507,1
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1507,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1517,1
    - Dst: u::u
      Src: /src/dnsmasq/src/option.c:1519,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:1519,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:1521,1
    - Dst: goto_err
      Src: /src/dnsmasq/src/option.c:1522,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1522,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1524,1
    - Dst: u::u
      Src: /src/dnsmasq/src/option.c:1526,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:1526,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:1528,1
    - Dst: goto_err
      Src: /src/dnsmasq/src/option.c:1529,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1529,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:1531,1
    - Dst: u::u
      Src: /src/dnsmasq/src/option.c:1533,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:1533,1
    - Dst: is_tag_prefix
      Src: /src/dnsmasq/src/option.c:1544,1
    - Dst: set_prefix
      Src: /src/dnsmasq/src/option.c:1544,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:1545,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:1545,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 3
    argNames:
    - errstr
    - arg
    - flags
    argTypes:
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1447
    functionDepth: 5
    functionLinenumber: 1447
    functionLinenumberEnd: 1549
    functionName: parse_dhcp_opt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - opt::opt
    - strstr
    - u::u
    - goto_err
    - dhcp_netid_create
    - split
    - lookup_dhcp_len
    - opt_string_alloc
    - _
    - atoi
    - is_tag_prefix
    - flags::flags
    - set_prefix
    - netid::netid
    - lookup_dhcp_opt
    - opt_malloc
    linkageType: ''
    returnType: int
    signature: int parse_dhcp_opt(char *errstr, char *arg, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:1879,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:1879,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1882,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:1886,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:1887,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/option.c:1888,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:1889,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1893,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1898
      start: 1869
    functionDepth: 3
    functionLinenumber: 1869
    functionLinenumberEnd: 1898
    functionName: if
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 6
    functionsReached:
    - unhide_metas
    - split
    - memcpy
    - PUTSHORT
    - strlen
    - opt_malloc
    linkageType: ''
    returnType: else
    signature: else if (comma && (opt_len & OT_CSTRING))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1903,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1905,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:1909,1
    - Dst: goto_err
      Src: /src/dnsmasq/src/option.c:1911,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:1911,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:1913,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:1913,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:1917,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1918,1
    - Dst: do_rfc1035_name
      Src: /src/dnsmasq/src/option.c:1923,1
    - Dst: opt::opt
      Src: /src/dnsmasq/src/option.c:1925,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/option.c:1927,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/option.c:1928,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:1931,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:1934,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1939
      start: 1899
    functionDepth: 5
    functionLinenumber: 1899
    functionLinenumberEnd: 1939
    functionName: if
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 6
    functionsReached:
    - opt::opt
    - goto_err
    - do_rfc1035_name
    - split
    - memcpy
    - _
    - PUTSHORT
    - free
    - canonicalise_opt
    - strlen
    - opt_malloc
    linkageType: ''
    returnType: else
    signature: else if (comma && (opt_len & OT_RFC1035_NAME))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_var
      Src: /src/dnsmasq/src/option.c:1999,1
    - Dst: option_val
      Src: /src/dnsmasq/src/option.c:1999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opt
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1997
    functionDepth: 1
    functionLinenumber: 1997
    functionLinenumberEnd: 2000
    functionName: set_option_bool
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 1
    functionsReached:
    - option_var
    - option_val
    linkageType: ''
    returnType: void
    signature: void set_option_bool(unsigned int opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_var
      Src: /src/dnsmasq/src/option.c:2004,1
    - Dst: option_val
      Src: /src/dnsmasq/src/option.c:2004,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opt
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 2002
    functionDepth: 1
    functionLinenumber: 2002
    functionLinenumberEnd: 2005
    functionName: reset_option_bool
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 1
    functionsReached:
    - option_var
    - option_val
    linkageType: ''
    returnType: void
    signature: void reset_option_bool(unsigned int opt)
  - BBCount: 590
    BranchProfiles: []
    Callsites:
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2013,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2024,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2024,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2032,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2032,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2039,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2050,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:2053,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2054,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2061,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:2064,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2065,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2080,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2081,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2086,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2087,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2089,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2094,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2100,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2108,1
    - Dst: opendir
      Src: /src/dnsmasq/src/option.c:2113,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:2114,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2114,1
    - Dst: readdir
      Src: /src/dnsmasq/src/option.c:2116,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2118,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2133,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2135,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2145,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2147,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2153,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2153,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:2154,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:2155,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:2156,1
    - Dst: stat
      Src: /src/dnsmasq/src/option.c:2159,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:2160,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2160,1
    - Dst: S_ISREG
      Src: /src/dnsmasq/src/option.c:2163,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2166,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2170,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2177,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:2182,1
    - Dst: closedir
      Src: /src/dnsmasq/src/option.c:2184,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2185,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2189,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2190,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2195,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2196,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2201,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2202,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2208,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2212,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2214,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2215,1
    - Dst: parse_mysockaddr
      Src: /src/dnsmasq/src/option.c:2218,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2218,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2220,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2221,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:2221,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2222,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2225,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:2225,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2226,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:2232,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2233,1
    - Dst: parse_mysockaddr
      Src: /src/dnsmasq/src/option.c:2236,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2236,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2238,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2239,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:2239,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2240,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2245,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:2245,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2246,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2255,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2257,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2263,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2265,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:2272,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2272,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2273,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2277,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2277,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/option.c:2280,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2286,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2286,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2292,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2297,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:2313,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2326,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2335,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2338,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:2338,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2339,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2339,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2342,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2343,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2345,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2346,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2347,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2347,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:2350,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2361,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2362,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2362,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2366,1
    - Dst: strtol
      Src: /src/dnsmasq/src/option.c:2370,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2375,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2382,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2382,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2386,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2386,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2388,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2391,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2400,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2401,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2427,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2428,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2443,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2445,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2449,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2450,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:2452,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2453,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2453,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2454,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2455,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2455,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2456,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2459,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2460,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2461,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2464,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2465,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2466,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2467,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2470,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2486,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:2487,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2488,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2500,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:2502,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2503,1
    - Dst: domain::domain
      Src: /src/dnsmasq/src/option.c:2504,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2505,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2505,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2520,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2521,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2523,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2524,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:2526,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2532,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2534,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2538,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2540,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2546,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2547,1
    - Dst: interface_names::interface_names
      Src: /src/dnsmasq/src/option.c:2549,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2558,1
    - Dst: exclude::exclude
      Src: /src/dnsmasq/src/option.c:2568,1
    - Dst: subnet::subnet
      Src: /src/dnsmasq/src/option.c:2573,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2582,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:2583,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2588,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2589,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2597,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:2598,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2602,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:2603,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:2605,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2616,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2617,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2618,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:2621,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2624,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:2631,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2632,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2636,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2637,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2638,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2639,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2639,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2644,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2644,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2648,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/option.c:2648,1
    - Dst: htonl
      Src: /src/dnsmasq/src/option.c:2648,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2648,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:2649,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2649,1
    - Dst: htonl
      Src: /src/dnsmasq/src/option.c:2649,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2657,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2657,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2658,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2658,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2659,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2659,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2661,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2662,1
    - Dst: domain_rev4
      Src: /src/dnsmasq/src/option.c:2666,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2666,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:2670,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2674,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2674,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/option.c:2676,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2676,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2679,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2679,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2690,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/option.c:2691,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2691,1
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/option.c:2692,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:2692,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2698,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2698,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2699,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2699,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2700,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2700,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2702,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2703,1
    - Dst: domain_rev6
      Src: /src/dnsmasq/src/option.c:2708,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2708,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:2712,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2717,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2722,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2723,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2725,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2725,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:2729,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:2729,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2730,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:2730,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2731,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2733,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2733,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:2737,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:2737,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:2737,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2738,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:2738,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2739,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2744,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2748,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2752,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2752,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2753,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2753,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2754,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2754,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2758,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2767,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/option.c:2768,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:2768,1
    - Dst: is6::is6
      Src: /src/dnsmasq/src/option.c:2773,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:2774,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:2774,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2782,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2783,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:2785,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2788,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2796,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2800,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2803,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:2804,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:2811,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2812,1
    - Dst: isxdigit
      Src: /src/dnsmasq/src/option.c:2815,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2816,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2818,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:2822,1
    - Dst: strtoul
      Src: /src/dnsmasq/src/option.c:2823,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:2826,1
    - Dst: strtoul_check
      Src: /src/dnsmasq/src/option.c:2828,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2829,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:2831,1
    - Dst: strtoul_check
      Src: /src/dnsmasq/src/option.c:2833,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2834,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2837,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2845,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:2848,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2849,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2850,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:2851,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2852,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2854,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2859,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2863,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2869,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2875,1
    - Dst: if_names_add
      Src: /src/dnsmasq/src/option.c:2876,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2882,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2892,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2893,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:2894,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:2923,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:2935,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:2938,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:2938,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2939,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2941,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2943,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2944,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:2955,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2957,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:2985,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:2986,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:2987,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2988,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2988,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2990,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2991,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2993,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2993,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:2996,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2996,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2998,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:2999,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:3000,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:3001,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:3003,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:3003,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:3007,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:3028,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:3034,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:3035,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:3036,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3057,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:3063,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:3072,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3084,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3086,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3088,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3091,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3091,1
    - Dst: parse_server
      Src: /src/dnsmasq/src/option.c:3095,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3096,1
    - Dst: parse_server_next
      Src: /src/dnsmasq/src/option.c:3103,1
    - Dst: parse_server_addr
      Src: /src/dnsmasq/src/option.c:3107,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3108,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3119,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/option.c:3129,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3130,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3135,1
    - Dst: freeaddrinfo
      Src: /src/dnsmasq/src/option.c:3143,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:3155,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3157,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3159,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:3161,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3161,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3164,1
    - Dst: domain_rev4
      Src: /src/dnsmasq/src/option.c:3169,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3170,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3172,1
    - Dst: domain_rev6
      Src: /src/dnsmasq/src/option.c:3177,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3178,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3181,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3191,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3191,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3198,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3198,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3211,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:3212,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:3216,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3223,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3225,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:3225,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3226,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3227,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3229,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3236,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3238,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3243,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3249,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3253,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3254,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:3257,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3273,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3273,1
    - Dst: strtoul_check
      Src: /src/dnsmasq/src/option.c:3280,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3281,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3283,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3291,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3291,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:3302,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3304,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3307,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3313,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3318,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:3326,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3329,1
    - Dst: is_valid_dns_name_pattern
      Src: /src/dnsmasq/src/option.c:3329,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3330,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3334,1
    - Dst: strtoul_check
      Src: /src/dnsmasq/src/option.c:3340,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3341,1
    - Dst: strtoul_check
      Src: /src/dnsmasq/src/option.c:3343,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3344,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3349,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3351,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:3358,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3361,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3369,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3372,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:3385,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:3388,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:3393,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3396,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3404,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3405,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3427,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3428,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3432,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3433,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3437,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3438,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3442,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3443,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3447,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3450,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3451,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3452,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3454,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3455,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3457,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3458,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3464,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3465,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3471,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3472,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3473,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3474,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3476,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3482,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3483,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3489,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3490,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3498,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3499,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3511,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3512,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3546,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3547,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3548,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3553,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3554,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3576,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3577,1
    - Dst: rrtype
      Src: /src/dnsmasq/src/option.c:3577,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3578,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3578,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:3581,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3603,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3604,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3610,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3611,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:3615,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3616,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3620,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3623,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3624,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3625,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3630,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3634,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3635,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:3636,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3637,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3637,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/option.c:3649,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3650,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/option.c:3651,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:3652,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3654,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3662,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3662,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3663,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3663,1
    - Dst: daemon::daemon
      Src: /src/dnsmasq/src/option.c:3665,1
    - Dst: next::next
      Src: /src/dnsmasq/src/option.c:3665,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3666,1
    - Dst: iface::iface
      Src: /src/dnsmasq/src/option.c:3666,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:3671,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:3672,1
    - Dst: iface::iface
      Src: /src/dnsmasq/src/option.c:3672,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3680,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3681,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3681,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3683,1
    - Dst: alias::alias
      Src: /src/dnsmasq/src/option.c:3684,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:3686,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3696,1
    - Dst: shared_addr::shared_addr
      Src: /src/dnsmasq/src/option.c:3699,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3703,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3707,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3707,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3710,1
    - Dst: shared_addr::shared_addr
      Src: /src/dnsmasq/src/option.c:3710,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3712,1
    - Dst: match_addr::match_addr
      Src: /src/dnsmasq/src/option.c:3712,1
    - Dst: if_index::if_index
      Src: /src/dnsmasq/src/option.c:3713,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/option.c:3713,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3717,1
    - Dst: shared_addr6::shared_addr6
      Src: /src/dnsmasq/src/option.c:3717,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3719,1
    - Dst: match_addr6::match_addr6
      Src: /src/dnsmasq/src/option.c:3719,1
    - Dst: if_index::if_index
      Src: /src/dnsmasq/src/option.c:3720,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/option.c:3720,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:3736,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3748,1
    - Dst: is_tag_prefix
      Src: /src/dnsmasq/src/option.c:3750,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:3754,1
    - Dst: filter::filter
      Src: /src/dnsmasq/src/option.c:3754,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:3758,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3761,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3761,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:3764,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3764,1
    - Dst: set_prefix
      Src: /src/dnsmasq/src/option.c:3764,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:3776,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3782,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3782,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3785,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:3785,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:3790,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3791,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3793,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3795,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:3795,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3798,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3798,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/option.c:3801,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:3801,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/option.c:3801,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:3801,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:3803,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:3804,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:3808,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3809,1
    - Dst: netmask::netmask
      Src: /src/dnsmasq/src/option.c:3809,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/option.c:3813,1
    - Dst: start::start
      Src: /src/dnsmasq/src/option.c:3813,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:3813,1
    - Dst: netmask::netmask
      Src: /src/dnsmasq/src/option.c:3813,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3816,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3816,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:3820,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3821,1
    - Dst: broadcast::broadcast
      Src: /src/dnsmasq/src/option.c:3821,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3829,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3829,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3835,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3842,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3844,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3844,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3846,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3848,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3850,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3852,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:3854,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:3854,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:3856,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:3858,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:3872,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:3879,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:3881,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3882,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:3883,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3884,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3887,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/option.c:3889,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3889,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:3889,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:3889,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3890,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3895,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/option.c:3899,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3899,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:3899,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:3902,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:3905,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/option.c:3906,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3906,1
    - Dst: prefix::prefix
      Src: /src/dnsmasq/src/option.c:3906,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3909,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3909,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/option.c:3913,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3913,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/option.c:3913,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:3913,1
    - Dst: start6::start6
      Src: /src/dnsmasq/src/option.c:3915,1
    - Dst: end6::end6
      Src: /src/dnsmasq/src/option.c:3916,1
    - Dst: dhcp_context_free
      Src: /src/dnsmasq/src/option.c:3923,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3924,1
    - Dst: ret_err::ret_err
      Src: /src/dnsmasq/src/option.c:3923,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:3932,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3932,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3935,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:3940,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3945,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3947,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:3967,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:3975,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:3975,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:3977,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4010,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:4011,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:4023,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:4024,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4027,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4028,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4034,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4034,1
    - Dst: clid::clid
      Src: /src/dnsmasq/src/option.c:4036,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4036,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:4040,1
    - Dst: clid::clid
      Src: /src/dnsmasq/src/option.c:4040,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4045,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4045,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4047,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:4048,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:4050,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4052,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:4053,1
    - Dst: filter::filter
      Src: /src/dnsmasq/src/option.c:4053,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4056,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4062,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:4064,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4066,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4069,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4069,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4072,1
    - Dst: addr6part
      Src: /src/dnsmasq/src/option.c:4078,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4080,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4085,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4085,1
    - Dst: addr6::addr6
      Src: /src/dnsmasq/src/option.c:4099,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4106,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:4107,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4110,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4112,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4112,1
    - Dst: hwaddr::hwaddr
      Src: /src/dnsmasq/src/option.c:4116,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:4121,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4121,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/option.c:4134,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:4135,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4135,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4146,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4148,1
    - Dst: isdigit
      Src: /src/dnsmasq/src/option.c:4175,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:4184,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:4189,1
    - Dst: hostname::hostname
      Src: /src/dnsmasq/src/option.c:4191,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4194,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4194,1
    - Dst: hostname::hostname
      Src: /src/dnsmasq/src/option.c:4198,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4198,1
    - Dst: legal_hostname
      Src: /src/dnsmasq/src/option.c:4199,1
    - Dst: hostname::hostname
      Src: /src/dnsmasq/src/option.c:4199,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4202,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4202,1
    - Dst: strip_hostname
      Src: /src/dnsmasq/src/option.c:4206,1
    - Dst: hostname::hostname
      Src: /src/dnsmasq/src/option.c:4206,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:4211,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4229,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4249,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4250,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:4259,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4261,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4263,1
    - Dst: set::set
      Src: /src/dnsmasq/src/option.c:4264,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4268,1
    - Dst: tag::tag
      Src: /src/dnsmasq/src/option.c:4270,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:4276,1
    - Dst: set::set
      Src: /src/dnsmasq/src/option.c:4284,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:4286,1
    - Dst: dhcp_netid_list_free
      Src: /src/dnsmasq/src/option.c:4287,1
    - Dst: set::set
      Src: /src/dnsmasq/src/option.c:4287,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4288,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4288,1
    - Dst: parse_dhcp_opt
      Src: /src/dnsmasq/src/option.c:4300,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4311,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4311,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4312,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:4314,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4316,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:4317,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4317,1
    - Dst: set_prefix
      Src: /src/dnsmasq/src/option.c:4317,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4324,1
    - Dst: dhcp_tags
      Src: /src/dnsmasq/src/option.c:4334,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4338,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4345,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4346,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4351,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4352,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4355,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4356,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4364,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:4370,1
    - Dst: dhcp_tags
      Src: /src/dnsmasq/src/option.c:4385,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4389,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4395,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4396,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:4398,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4410,1
    - Dst: dhcp_tags
      Src: /src/dnsmasq/src/option.c:4415,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4420,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4424,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4425,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4426,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4427,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4427,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:4428,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4428,1
    - Dst: u::u
      Src: /src/dnsmasq/src/option.c:4430,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4433,1
    - Dst: val::val
      Src: /src/dnsmasq/src/option.c:4434,1
    - Dst: val::val
      Src: /src/dnsmasq/src/option.c:4436,1
    - Dst: daemon::daemon
      Src: /src/dnsmasq/src/option.c:4439,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4448,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4456,1
    - Dst: dhcp_tags
      Src: /src/dnsmasq/src/option.c:4457,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4459,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/option.c:4462,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4465,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4468,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4471,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4481,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4482,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4490,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4495,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4495,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4497,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4498,1
    - Dst: dhcp_netid_free
      Src: /src/dnsmasq/src/option.c:4521,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:4521,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4523,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4528,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4529,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4532,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:4533,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4533,1
    - Dst: set_prefix
      Src: /src/dnsmasq/src/option.c:4533,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4534,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:4535,1
    - Dst: hwaddr::hwaddr
      Src: /src/dnsmasq/src/option.c:4535,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:4535,1
    - Dst: hwaddr_type::hwaddr_type
      Src: /src/dnsmasq/src/option.c:4535,1
    - Dst: hwaddr_len::hwaddr_len
      Src: /src/dnsmasq/src/option.c:4536,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4538,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4558,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4560,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4561,1
    - Dst: netid::netid
      Src: /src/dnsmasq/src/option.c:4563,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4563,1
    - Dst: set_prefix
      Src: /src/dnsmasq/src/option.c:4563,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4568,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:4570,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4572,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:4576,1
    - Dst: isxdigit
      Src: /src/dnsmasq/src/option.c:4582,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4589,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4592,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4593,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4593,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:4594,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4594,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:4598,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4598,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4599,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4599,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:4600,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:4600,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4635,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:4636,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:4637,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4638,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4638,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4650,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4679,1
    - Dst: dhcp_netid_create
      Src: /src/dnsmasq/src/option.c:4680,1
    - Dst: is_tag_prefix
      Src: /src/dnsmasq/src/option.c:4680,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4691,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4692,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4693,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/option.c:4693,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4694,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4694,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4704,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4705,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4706,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4716,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4717,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4718,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4724,1
    - Dst: local::local
      Src: /src/dnsmasq/src/option.c:4724,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:4726,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:4728,1
    - Dst: port::port
      Src: /src/dnsmasq/src/option.c:4728,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4731,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4731,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4733,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:4737,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4747,1
    - Dst: local::local
      Src: /src/dnsmasq/src/option.c:4747,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:4749,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:4751,1
    - Dst: port::port
      Src: /src/dnsmasq/src/option.c:4751,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4754,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4754,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4756,1
    - Dst: server::server
      Src: /src/dnsmasq/src/option.c:4756,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:4759,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4769,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4774,1
    - Dst: interface::interface
      Src: /src/dnsmasq/src/option.c:4774,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4775,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4775,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4785,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4787,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4792,1
    - Dst: strcasestr
      Src: /src/dnsmasq/src/option.c:4793,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4796,1
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/option.c:4798,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4800,1
    - Dst: mtu::mtu
      Src: /src/dnsmasq/src/option.c:4800,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4801,1
    - Dst: strcasestr
      Src: /src/dnsmasq/src/option.c:4805,1
    - Dst: strcasestr
      Src: /src/dnsmasq/src/option.c:4805,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4811,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4813,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4814,1
    - Dst: interval::interval
      Src: /src/dnsmasq/src/option.c:4814,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4815,1
    - Dst: lifetime::lifetime
      Src: /src/dnsmasq/src/option.c:4815,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4818,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:4818,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4819,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4819,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4828,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4828,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4829,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4829,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:4832,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4832,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4833,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:4834,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:4843,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:4846,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:4847,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4852,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:4854,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:4857,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4860,1
    - Dst: in::in
      Src: /src/dnsmasq/src/option.c:4860,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4861,1
    - Dst: out::out
      Src: /src/dnsmasq/src/option.c:4861,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4862,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:4862,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4863,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4863,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4866,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:4866,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/option.c:4867,1
    - Dst: in::in
      Src: /src/dnsmasq/src/option.c:4867,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:4867,1
    - Dst: mask::mask
      Src: /src/dnsmasq/src/option.c:4867,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/option.c:4868,1
    - Dst: in::in
      Src: /src/dnsmasq/src/option.c:4868,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/option.c:4868,1
    - Dst: end::end
      Src: /src/dnsmasq/src/option.c:4868,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4869,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4869,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4880,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:4882,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4891,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4893,1
    - Dst: proto4::proto4
      Src: /src/dnsmasq/src/option.c:4893,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:4895,1
    - Dst: proto6::proto6
      Src: /src/dnsmasq/src/option.c:4895,1
    - Dst: split_chr
      Src: /src/dnsmasq/src/option.c:4903,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:4905,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:4907,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:4910,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:4913,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:4917,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4918,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4918,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:4920,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:4920,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/option.c:4927,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:4931,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4931,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4932,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4933,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4933,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4944,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4951,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4951,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:4953,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:4958,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4959,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4962,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4965,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4966,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4967,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4967,1
    - Dst: daemon::daemon
      Src: /src/dnsmasq/src/option.c:4970,1
    - Dst: next::next
      Src: /src/dnsmasq/src/option.c:4970,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/option.c:4971,1
    - Dst: alias::alias
      Src: /src/dnsmasq/src/option.c:4971,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4973,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:4974,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:4975,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:4975,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:4977,1
    - Dst: isspace
      Src: /src/dnsmasq/src/option.c:4984,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:4995,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4997,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:4998,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5000,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5001,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5002,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5002,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5006,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5025,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5030,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5031,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5032,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5033,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5035,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5036,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5037,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5037,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5041,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:5045,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:5046,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:5047,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5062,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5063,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5065,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:5068,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:5069,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5069,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:5070,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5072,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5073,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5073,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5083,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:5085,1
    - Dst: txt::txt
      Src: /src/dnsmasq/src/option.c:5085,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5097,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5098,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5099,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5101,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:5105,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:5105,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5105,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5106,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5106,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:5108,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:5109,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5111,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5111,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5112,1
    - Dst: len::len
      Src: /src/dnsmasq/src/option.c:5112,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5114,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:5115,1
    - Dst: txt::txt
      Src: /src/dnsmasq/src/option.c:5115,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5115,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/option.c:5116,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5116,1
    - Dst: txt::txt
      Src: /src/dnsmasq/src/option.c:5116,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5116,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5128,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5130,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:5134,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5134,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5135,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5135,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5139,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5141,1
    - Dst: unhide_meta
      Src: /src/dnsmasq/src/option.c:5159,1
    - Dst: txt::txt
      Src: /src/dnsmasq/src/option.c:5164,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5175,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5177,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5178,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5178,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5183,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5184,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5185,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5185,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5190,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5191,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5193,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5194,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5194,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5200,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5201,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5203,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5204,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5204,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5206,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5208,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5209,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5209,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5215,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5231,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5232,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5232,1
    - Dst: opt_malloc::opt_malloc
      Src: /src/dnsmasq/src/option.c:5234,1
    - Dst: atoi
      Src: /src/dnsmasq/src/option.c:5248,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:5249,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/option.c:5254,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5261,1
    - Dst: names::names
      Src: /src/dnsmasq/src/option.c:5266,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5269,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5271,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5271,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5274,1
    - Dst: names::names
      Src: /src/dnsmasq/src/option.c:5278,1
    - Dst: names::names
      Src: /src/dnsmasq/src/option.c:5283,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5289,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:5309,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5310,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5327,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:5329,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5330,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:5340,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5346,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:5347,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5349,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5349,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5355,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5363,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5363,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5366,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5368,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5370,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5377,1
    - Dst: name::name
      Src: /src/dnsmasq/src/option.c:5381,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:5381,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5382,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5382,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5386,1
    - Dst: split
      Src: /src/dnsmasq/src/option.c:5386,1
    - Dst: atoi_check16
      Src: /src/dnsmasq/src/option.c:5387,1
    - Dst: keytag::keytag
      Src: /src/dnsmasq/src/option.c:5387,1
    - Dst: atoi_check8
      Src: /src/dnsmasq/src/option.c:5388,1
    - Dst: algo::algo
      Src: /src/dnsmasq/src/option.c:5388,1
    - Dst: atoi_check8
      Src: /src/dnsmasq/src/option.c:5389,1
    - Dst: digest_type::digest_type
      Src: /src/dnsmasq/src/option.c:5389,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5391,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5392,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5392,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5396,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5397,1
    - Dst: unhide_metas
      Src: /src/dnsmasq/src/option.c:5398,1
    - Dst: isspace
      Src: /src/dnsmasq/src/option.c:5401,1
    - Dst: digestlen::digestlen
      Src: /src/dnsmasq/src/option.c:5406,1
    - Dst: parse_hex
      Src: /src/dnsmasq/src/option.c:5406,1
    - Dst: digest::digest
      Src: /src/dnsmasq/src/option.c:5406,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5408,1
    - Dst: ret_err_free
      Src: /src/dnsmasq/src/option.c:5409,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5409,1
    - Dst: atoi_check
      Src: /src/dnsmasq/src/option.c:5424,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5425,1
    - Dst: ret_err
      Src: /src/dnsmasq/src/option.c:5431,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5431,1
    CyclomaticComplexity: 810
    EdgeCount: 810
    ICount: 2177
    argCount: 6
    argNames:
    - option
    - arg
    - errstr
    - gen_err
    - command_line
    - servers_only
    argTypes:
    - int
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5433
      start: 2007
    functionDepth: 7
    functionLinenumber: 2007
    functionLinenumberEnd: 5433
    functionName: one_opt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - interface::interface
    - isxdigit
    - shared_addr6::shared_addr6
    - parse_dhcp_opt
    - next::next
    - iface::iface
    - parse_server_next
    - dhcp_netid_free
    - netmask::netmask
    - hwaddr_len::hwaddr_len
    - legal_hostname
    - name::name
    - parse_mysockaddr
    - hwaddr_type::hwaddr_type
    - clid::clid
    - closedir
    - end::end
    - parse_server
    - prefix::prefix
    - parse_server_addr
    - proto4::proto4
    - out::out
    - set_option_bool
    - match_addr::match_addr
    - domain::domain
    - is_same_net6
    - strcasestr
    - start6::start6
    - txt::txt
    - atoi
    - is_tag_prefix
    - opt_malloc::opt_malloc
    - interface_names::interface_names
    - val::val
    - one_file
    - u::u
    - interval::interval
    - stat
    - ret_err_free
    - addr6part
    - die
    - hostname_isequal
    - lifetime::lifetime
    - dhcp_context_free
    - opt_malloc
    - local::local
    - strstr
    - strcat
    - rrtype
    - domain_rev4
    - is_same_net
    - tag::tag
    - memcpy
    - server::server
    - if_names_add
    - _
    - digest_type::digest_type
    - split_chr
    - names::names
    - match_addr6::match_addr6
    - memset
    - subnet::subnet
    - proto6::proto6
    - set_prefix
    - strchr
    - strtoul
    - digestlen::digestlen
    - isdigit
    - readdir
    - port::port
    - set::set
    - opendir
    - split
    - add_update_server
    - if_index::if_index
    - unhide_meta
    - exclude::exclude
    - netid::netid
    - unhide_metas
    - IN6_IS_ADDR_UNSPECIFIED
    - hwaddr::hwaddr
    - end6::end6
    - setaddr6part
    - sprintf
    - broadcast::broadcast
    - keytag::keytag
    - flags::flags
    - is_valid_dns_name_pattern
    - strcmp
    - parse_hex
    - strtoul_check
    - freeaddrinfo
    - strcasecmp
    - is6::is6
    - dhcp_netid_list_free
    - alias::alias
    - hostname::hostname
    - mask::mask
    - inet_ntop
    - strcpy
    - if_nametoindex
    - daemon::daemon
    - in::in
    - atoi_check
    - start::start
    - strtol
    - S_ISREG
    - digest::digest
    - atoi_check16
    - ntohl
    - addr6::addr6
    - htonl
    - strlen
    - dhcp_netid_create
    - atoi_check8
    - strip_hostname
    - inet_pton
    - shared_addr::shared_addr
    - canonicalise_opt
    - mtu::mtu
    - domain_rev6
    - opt_string_alloc
    - ret_err::ret_err
    - filter::filter
    - free
    - isspace
    - strrchr
    - algo::algo
    - dhcp_tags
    - ret_err
    - len::len
    - addr::addr
    linkageType: ''
    returnType: int
    signature: int one_opt(int option, char *arg, char *errstr, char *gen_err, int
      command_line, int servers_only)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/dnsmasq/src/option.c:5443,1
    - Dst: setjmp
      Src: /src/dnsmasq/src/option.c:5455,1
    - Dst: memmove
      Src: /src/dnsmasq/src/option.c:5470,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5470,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:5474,1
    - Dst: memmove
      Src: /src/dnsmasq/src/option.c:5486,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5486,1
    - Dst: hide_meta
      Src: /src/dnsmasq/src/option.c:5488,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5493,1
    - Dst: memmove
      Src: /src/dnsmasq/src/option.c:5497,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5497,1
    - Dst: isspace
      Src: /src/dnsmasq/src/option.c:5500,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5521,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:5530,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5543,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5550,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5552,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5554,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5556,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:5561,1
    - Dst: one_opt
      Src: /src/dnsmasq/src/option.c:5563,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5563,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:5566,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5566,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5566,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/option.c:5568,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5568,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5568,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5571,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5573,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 93
    argCount: 4
    argNames:
    - file
    - f
    - hard_opt
    - from_script
    argTypes:
    - char*
    - FILE*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5578
      start: 5438
    functionDepth: 8
    functionLinenumber: 5438
    functionLinenumberEnd: 5578
    functionName: read_file
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - hide_meta
    - strcpy
    - strcmp
    - memmove
    - sprintf
    - die
    - my_syslog
    - _
    - strchr
    - one_opt
    - fgets
    - isspace
    - strlen
    - setjmp
    linkageType: ''
    returnType: void
    signature: void read_file(char *file, FILE *f, int hard_opt, int from_script)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5583,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5583,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:5586,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:5588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - file
    - flags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5591
      start: 5581
    functionDepth: 3
    functionLinenumber: 5581
    functionLinenumberEnd: 5591
    functionName: option_read_dynfile
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 2
    functionsReached:
    - my_syslog
    - one_file
    - _
    linkageType: ''
    returnType: int
    signature: int option_read_dynfile(char *file, int flags)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5618,1
    - Dst: stat
      Src: /src/dnsmasq/src/option.c:5631,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/option.c:5639,1
    - Dst: popen
      Src: /src/dnsmasq/src/option.c:5648,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5649,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5649,1
    - Dst: fopen
      Src: /src/dnsmasq/src/option.c:5651,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5657,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5660,1
    - Dst: strerror
      Src: /src/dnsmasq/src/option.c:5660,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5664,1
    - Dst: read_file
      Src: /src/dnsmasq/src/option.c:5669,1
    - Dst: pclose
      Src: /src/dnsmasq/src/option.c:5675,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5676,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5676,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5679,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5679,1
    - Dst: fclose
      Src: /src/dnsmasq/src/option.c:5682,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 2
    argNames:
    - file
    - hard_opt
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5685
      start: 5594
    functionDepth: 9
    functionLinenumber: 5594
    functionLinenumberEnd: 5685
    functionName: one_file
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 2
    functionsReached:
    - stat
    - popen
    - die
    - my_syslog
    - fclose
    - _
    - pclose
    - safe_malloc
    - strerror
    - fopen
    - strcmp
    - read_file
    linkageType: ''
    returnType: int
    signature: int one_file(char *file, int hard_opt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5689,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - ent
    argTypes:
    - struct dirent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5700
      start: 5687
    functionDepth: 0
    functionLinenumber: 5687
    functionLinenumberEnd: 5700
    functionName: file_filter
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: int
    signature: int file_filter(const struct dirent *ent)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/dnsmasq/src/option.c:5727,1
    - Dst: S_ISDIR
      Src: /src/dnsmasq/src/option.c:5727,1
    - Dst: scandir
      Src: /src/dnsmasq/src/option.c:5734,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5736,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5736,1
    - Dst: strerror
      Src: /src/dnsmasq/src/option.c:5737,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5743,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5744,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5757,1
    - Dst: strstr
      Src: /src/dnsmasq/src/option.c:5758,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:5760,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/option.c:5776,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/option.c:5779,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5781,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:5785,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:5786,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:5787,1
    - Dst: stat
      Src: /src/dnsmasq/src/option.c:5800,1
    - Dst: S_ISREG
      Src: /src/dnsmasq/src/option.c:5800,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5805,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 54
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct hostsfile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5810
      start: 5702
    functionDepth: 3
    functionLinenumber: 5702
    functionLinenumberEnd: 5810
    functionName: expand_filelist
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - strstr
    - strcpy
    - strcat
    - stat
    - scandir
    - whine_malloc
    - my_syslog
    - free
    - _
    - strerror
    - S_ISDIR
    - S_ISREG
    - strcmp
    - strlen
    linkageType: ''
    returnType: struct hostsfile
    signature: struct hostsfile *expand_filelist(struct hostsfile *list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/dnsmasq/src/option.c:5816,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5818,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5818,1
    - Dst: strerror
      Src: /src/dnsmasq/src/option.c:5818,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/option.c:5822,1
    - Dst: read_file
      Src: /src/dnsmasq/src/option.c:5823,1
    - Dst: fclose
      Src: /src/dnsmasq/src/option.c:5824,1
    - Dst: cleanup_servers
      Src: /src/dnsmasq/src/option.c:5825,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/option.c:5826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5827
      start: 5812
    functionDepth: 9
    functionLinenumber: 5812
    functionLinenumberEnd: 5827
    functionName: read_servers_file
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - mark_servers
    - my_syslog
    - fclose
    - _
    - strerror
    - check_servers
    - fopen
    - read_file
    - cleanup_servers
    linkageType: ''
    returnType: void
    signature: void read_servers_file(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_config_free
      Src: /src/dnsmasq/src/option.c:5843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5848
      start: 5831
    functionDepth: 2
    functionLinenumber: 5831
    functionLinenumberEnd: 5848
    functionName: clear_dynamic_conf
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - dhcp_config_free
    linkageType: ''
    returnType: void
    signature: void clear_dynamic_conf(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_opt_free
      Src: /src/dnsmasq/src/option.c:5861,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - dhcp_opts
    argTypes:
    - struct dhcp_opt**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5866
      start: 5850
    functionDepth: 2
    functionLinenumber: 5850
    functionLinenumberEnd: 5866
    functionName: clear_dhcp_opt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - dhcp_opt_free
    linkageType: ''
    returnType: void
    signature: void clear_dhcp_opt(struct dhcp_opt **dhcp_opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_dhcp_opt
      Src: /src/dnsmasq/src/option.c:5870,1
    - Dst: clear_dhcp_opt
      Src: /src/dnsmasq/src/option.c:5872,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5874
      start: 5868
    functionDepth: 3
    functionLinenumber: 5868
    functionLinenumberEnd: 5874
    functionName: clear_dynamic_opt
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - clear_dhcp_opt
    linkageType: ''
    returnType: void
    signature: void clear_dynamic_opt(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: clear_dynamic_conf
      Src: /src/dnsmasq/src/option.c:5884,1
    - Dst: clear_dynamic_opt
      Src: /src/dnsmasq/src/option.c:5885,1
    - Dst: expand_filelist
      Src: /src/dnsmasq/src/option.c:5889,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:5893,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5894,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5894,1
    - Dst: expand_filelist
      Src: /src/dnsmasq/src/option.c:5900,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:5904,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/option.c:5905,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5905,1
    - Dst: set_dynamic_inotify
      Src: /src/dnsmasq/src/option.c:5911,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5913
      start: 5876
    functionDepth: 10
    functionLinenumber: 5876
    functionLinenumberEnd: 5913
    functionName: reread_dhcp
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    - clear_dynamic_conf
    - expand_filelist
    - set_dynamic_inotify
    - clear_dynamic_opt
    - one_file
    linkageType: ''
    returnType: void
    signature: void reread_dhcp(void)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5919,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5925,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5931,1
    - Dst: memset
      Src: /src/dnsmasq/src/option.c:5932,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/option.c:5934,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/option.c:5935,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/option.c:5970,1
    - Dst: getopt_long
      Src: /src/dnsmasq/src/option.c:5975,1
    - Dst: getopt
      Src: /src/dnsmasq/src/option.c:5977,1
    - Dst: isspace
      Src: /src/dnsmasq/src/option.c:5986,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:5987,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:5987,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5995,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:5997,1
    - Dst: strlen
      Src: /src/dnsmasq/src/option.c:5998,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:5999,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/option.c:6001,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:6013,1
    - Dst: display_opts
      Src: /src/dnsmasq/src/option.c:6014,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:6016,1
    - Dst: display_opts6
      Src: /src/dnsmasq/src/option.c:6017,1
    - Dst: do_usage
      Src: /src/dnsmasq/src/option.c:6021,1
    - Dst: exit
      Src: /src/dnsmasq/src/option.c:6023,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:6027,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6027,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:6028,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6028,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:6029,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6029,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:6030,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6030,1
    - Dst: printf
      Src: /src/dnsmasq/src/option.c:6031,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6031,1
    - Dst: exit
      Src: /src/dnsmasq/src/option.c:6032,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6037,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6040,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:6041,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:6042,1
    - Dst: one_opt
      Src: /src/dnsmasq/src/option.c:6048,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6048,1
    - Dst: one_opt
      Src: /src/dnsmasq/src/option.c:6050,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6050,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6052,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6052,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:6056,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:6060,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:6061,1
    - Dst: one_file
      Src: /src/dnsmasq/src/option.c:6064,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6068,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6070,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6071,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6072,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6073,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6074,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6075,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6076,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6077,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6079,1
    - Dst: add_txt
      Src: /src/dnsmasq/src/option.c:6081,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6087,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:6102,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:6104,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/option.c:6133,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6149,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6149,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:6164,1
    - Dst: htons
      Src: /src/dnsmasq/src/option.c:6166,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:6172,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:6173,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6174,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:6179,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6180,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6185,1
    - Dst: gethostname
      Src: /src/dnsmasq/src/option.c:6189,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6190,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6190,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/option.c:6193,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6196,1
    - Dst: opt_malloc
      Src: /src/dnsmasq/src/option.c:6198,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6202,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6207,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6214,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6217,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6218,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6218,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6220,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6225,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6228,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6228,1
    - Dst: fopen
      Src: /src/dnsmasq/src/option.c:6230,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6231,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6231,1
    - Dst: fgets
      Src: /src/dnsmasq/src/option.c:6233,1
    - Dst: strtok
      Src: /src/dnsmasq/src/option.c:6235,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/option.c:6237,1
    - Dst: strtok
      Src: /src/dnsmasq/src/option.c:6240,1
    - Dst: canonicalise_opt
      Src: /src/dnsmasq/src/option.c:6241,1
    - Dst: fclose
      Src: /src/dnsmasq/src/option.c:6245,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6248,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6248,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:6258,1
    - Dst: strchr
      Src: /src/dnsmasq/src/option.c:6259,1
    - Dst: strrchr
      Src: /src/dnsmasq/src/option.c:6259,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/option.c:6261,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:6262,1
    - Dst: strcat
      Src: /src/dnsmasq/src/option.c:6263,1
    - Dst: free
      Src: /src/dnsmasq/src/option.c:6264,1
    - Dst: opt_string_alloc
      Src: /src/dnsmasq/src/option.c:6265,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6268,1
    - Dst: die
      Src: /src/dnsmasq/src/option.c:6269,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6269,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/option.c:6275,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/option.c:6276,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6278,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/option.c:6278,1
    - Dst: if_names_add
      Src: /src/dnsmasq/src/option.c:6281,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/option.c:6282,1
    - Dst: fprintf
      Src: /src/dnsmasq/src/option.c:6287,1
    - Dst: _
      Src: /src/dnsmasq/src/option.c:6287,1
    - Dst: exit
      Src: /src/dnsmasq/src/option.c:6288,1
    CyclomaticComplexity: 94
    EdgeCount: 94
    ICount: 223
    argCount: 3
    argNames:
    - argc
    - argv
    - compile_opts
    argTypes:
    - int
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6290
      start: 5916
    functionDepth: 10
    functionLinenumber: 5916
    functionLinenumberEnd: 6290
    functionName: read_opts
    functionSourceFile: /src/dnsmasq/src/option.c
    functionUses: 0
    functionsReached:
    - reset_option_bool
    - getopt
    - die
    - safe_strncpy
    - hostname_isequal
    - fclose
    - strlen
    - opt_malloc
    - do_usage
    - strcat
    - display_opts
    - safe_malloc
    - htons
    - fopen
    - strcmp
    - fgets
    - canonicalise_opt
    - if_names_add
    - option_bool
    - printf
    - exit
    - fprintf
    - mark_servers
    - set_option_bool
    - _
    - opt_string_alloc
    - gethostname
    - free
    - isspace
    - getopt_long
    - strrchr
    - strcpy
    - memset
    - strtok
    - add_txt
    - strchr
    - one_opt
    - display_opts6
    - one_file
    linkageType: ''
    returnType: void
    signature: void read_opts(int argc, char **argv, char *compile_opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: NL_ALIGN
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NL_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:78,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:79,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/ipset.c:82,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:82,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - nlh
    - type
    - len
    - data
    argTypes:
    - struct nlmsghdr*
    - uint16_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: add_attr
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 0
    functionsReached:
    - memcpy
    - NL_ALIGN
    linkageType: ''
    returnType: void
    signature: void add_attr(struct nlmsghdr *nlh, uint16_t type, size_t len, const
      void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: KERNEL_VERSION
      Src: /src/dnsmasq/src/ipset.c:88,1
    - Dst: socket
      Src: /src/dnsmasq/src/ipset.c:90,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/ipset.c:94,1
    - Dst: socket
      Src: /src/dnsmasq/src/ipset.c:95,1
    - Dst: bind
      Src: /src/dnsmasq/src/ipset.c:96,1
    - Dst: die
      Src: /src/dnsmasq/src/ipset.c:99,1
    - Dst: _
      Src: /src/dnsmasq/src/ipset.c:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 100
    functionName: ipset_init
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 0
    functionsReached:
    - bind
    - die
    - _
    - safe_malloc
    - KERNEL_VERSION
    - socket
    linkageType: ''
    returnType: void
    signature: void ipset_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/ipset.c:110,1
    - Dst: memset
      Src: /src/dnsmasq/src/ipset.c:116,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:119,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:124,1
    - Dst: htons
      Src: /src/dnsmasq/src/ipset.c:127,1
    - Dst: add_attr
      Src: /src/dnsmasq/src/ipset.c:130,1
    - Dst: add_attr
      Src: /src/dnsmasq/src/ipset.c:131,1
    - Dst: strlen
      Src: /src/dnsmasq/src/ipset.c:131,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:132,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:133,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:135,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:136,1
    - Dst: add_attr
      Src: /src/dnsmasq/src/ipset.c:138,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:141,1
    - Dst: NL_ALIGN
      Src: /src/dnsmasq/src/ipset.c:142,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/ipset.c:144,1
    - Dst: sendto
      Src: /src/dnsmasq/src/ipset.c:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 4
    argNames:
    - setname
    - ipaddr
    - af
    - remove
    argTypes:
    - char*
    - union all_addr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 148
    functionName: new_add_to_ipset
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 0
    functionsReached:
    - add_attr
    - memset
    - NL_ALIGN
    - retry_send
    - htons
    - sendto
    - strlen
    linkageType: ''
    returnType: int
    signature: int new_add_to_ipset(const char *setname, const union all_addr *ipaddr,
      int af, int remove)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/ipset.c:169,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/ipset.c:177,1
    - Dst: getsockopt
      Src: /src/dnsmasq/src/ipset.c:179,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/ipset.c:183,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/ipset.c:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - setname
    - ipaddr
    - remove
    argTypes:
    - char*
    - union all_addr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 188
    functionName: old_add_to_ipset
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 0
    functionsReached:
    - strcpy
    - getsockopt
    - ntohl
    - strlen
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int old_add_to_ipset(const char *setname, const union all_addr *ipaddr,
      int remove)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: old_add_to_ipset
      Src: /src/dnsmasq/src/ipset.c:208,1
    - Dst: new_add_to_ipset
      Src: /src/dnsmasq/src/ipset.c:208,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ipset.c:211,1
    - Dst: _
      Src: /src/dnsmasq/src/ipset.c:211,1
    - Dst: strerror
      Src: /src/dnsmasq/src/ipset.c:211,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - setname
    - ipaddr
    - flags
    - remove
    argTypes:
    - char*
    - union all_addr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 214
    functionName: add_to_ipset
    functionSourceFile: /src/dnsmasq/src/ipset.c
    functionUses: 2
    functionsReached:
    - new_add_to_ipset
    - my_syslog
    - _
    - strerror
    - old_add_to_ipset
    linkageType: ''
    returnType: int
    signature: int add_to_ipset(const char *setname, const union all_addr *ipaddr,
      int flags, int remove)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/loop.c:27,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:33,1
    - Dst: loop_make_probe
      Src: /src/dnsmasq/src/loop.c:36,1
    - Dst: allocate_rfd
      Src: /src/dnsmasq/src/loop.c:41,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/loop.c:44,1
    - Dst: sendto
      Src: /src/dnsmasq/src/loop.c:44,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/loop.c:45,1
    - Dst: free_rfds
      Src: /src/dnsmasq/src/loop.c:48,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 22
    functionDepth: 3
    functionLinenumber: 22
    functionLinenumberEnd: 49
    functionName: loop_send_probes
    functionSourceFile: /src/dnsmasq/src/loop.c
    functionUses: 0
    functionsReached:
    - free_rfds
    - option_bool
    - loop_make_probe
    - sa_len
    - retry_send
    - sendto
    - strlen
    - allocate_rfd
    linkageType: ''
    returnType: void
    signature: void loop_send_probes(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rand16
      Src: /src/dnsmasq/src/loop.c:59,1
    - Dst: htons
      Src: /src/dnsmasq/src/loop.c:60,1
    - Dst: htons
      Src: /src/dnsmasq/src/loop.c:61,1
    - Dst: SET_OPCODE
      Src: /src/dnsmasq/src/loop.c:64,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/loop.c:67,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:69,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/loop.c:70,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:71,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/loop.c:73,1
    - Dst: PUTSHORT
      Src: /src/dnsmasq/src/loop.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - uid
    argTypes:
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 77
    functionName: loop_make_probe
    functionSourceFile: /src/dnsmasq/src/loop.c
    functionUses: 1
    functionsReached:
    - strcpy
    - rand16
    - sprintf
    - PUTSHORT
    - htons
    - strlen
    - SET_OPCODE
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t loop_make_probe(u32 uid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/loop.c:86,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:90,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:90,1
    - Dst: strstr
      Src: /src/dnsmasq/src/loop.c:91,1
    - Dst: isxdigit
      Src: /src/dnsmasq/src/loop.c:95,1
    - Dst: strtol
      Src: /src/dnsmasq/src/loop.c:98,1
    - Dst: strlen
      Src: /src/dnsmasq/src/loop.c:101,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/loop.c:106,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 2
    argNames:
    - query
    - type
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 111
    functionName: detect_loop
    functionSourceFile: /src/dnsmasq/src/loop.c
    functionUses: 1
    functionsReached:
    - strstr
    - isxdigit
    - option_bool
    - strtol
    - check_servers
    - strlen
    linkageType: ''
    returnType: int
    signature: int detect_loop(char *query, int type)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/src/slaac.c:50,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/slaac.c:51,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/slaac.c:58,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/slaac.c:65,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/slaac.c:75,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/slaac.c:91,1
    - Dst: ra_start_unsolicited
      Src: /src/dnsmasq/src/slaac.c:97,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/slaac.c:108,1
    - Dst: free
      Src: /src/dnsmasq/src/slaac.c:114,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 45
    argCount: 3
    argNames:
    - lease
    - now
    - force
    argTypes:
    - struct dhcp_lease*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 25
    functionDepth: 2
    functionLinenumber: 25
    functionLinenumberEnd: 116
    functionName: slaac_add_addrs
    functionSourceFile: /src/dnsmasq/src/slaac.c
    functionUses: 3
    functionsReached:
    - whine_malloc
    - lease_update_dns
    - IN6_ARE_ADDR_EQUAL
    - free
    - memcpy
    - ra_start_unsolicited
    linkageType: ''
    returnType: void
    signature: void slaac_add_addrs(struct dhcp_lease *lease, time_t now, int force)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rand16
      Src: /src/dnsmasq/src/slaac.c:135,1
    - Dst: difftime
      Src: /src/dnsmasq/src/slaac.c:144,1
    - Dst: reset_counter
      Src: /src/dnsmasq/src/slaac.c:149,1
    - Dst: expand
      Src: /src/dnsmasq/src/slaac.c:151,1
    - Dst: memset
      Src: /src/dnsmasq/src/slaac.c:159,1
    - Dst: htons
      Src: /src/dnsmasq/src/slaac.c:164,1
    - Dst: sendto
      Src: /src/dnsmasq/src/slaac.c:167,1
    - Dst: save_counter
      Src: /src/dnsmasq/src/slaac.c:167,1
    - Dst: rand16
      Src: /src/dnsmasq/src/slaac.c:174,1
    - Dst: rand16
      Src: /src/dnsmasq/src/slaac.c:176,1
    - Dst: difftime
      Src: /src/dnsmasq/src/slaac.c:183,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 38
    argCount: 2
    argNames:
    - now
    - leases
    argTypes:
    - time_t
    - struct dhcp_lease*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 188
    functionName: periodic_slaac
    functionSourceFile: /src/dnsmasq/src/slaac.c
    functionUses: 1
    functionsReached:
    - memset
    - rand16
    - difftime
    - save_counter
    - expand
    - htons
    - reset_counter
    - sendto
    linkageType: ''
    returnType: time_t
    signature: time_t periodic_slaac(time_t now, struct dhcp_lease *leases)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/slaac.c:201,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/slaac.c:205,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/slaac.c:206,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/slaac.c:207,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/slaac.c:210,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - sender
    - packet
    - interface
    - leases
    argTypes:
    - struct in6_addr*
    - unsigned char*
    - char*
    - struct dhcp_lease*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 191
    functionDepth: 3
    functionLinenumber: 191
    functionLinenumberEnd: 211
    functionName: slaac_ping_reply
    functionSourceFile: /src/dnsmasq/src/slaac.c
    functionUses: 1
    functionsReached:
    - option_bool
    - lease_update_dns
    - my_syslog
    - IN6_ARE_ADDR_EQUAL
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void slaac_ping_reply(struct in6_addr *sender, unsigned char *packet,
      char *interface, struct dhcp_lease *leases)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:29,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - fd
    - index
    - name
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 35
    functionName: indextoname
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 12
    functionsReached:
    - safe_strncpy
    - ioctl
    linkageType: ''
    returnType: int
    signature: int indextoname(int fd, int index, char *name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getzoneid
      Src: /src/dnsmasq/src/network.c:57,1
    - Dst: if_indextoname
      Src: /src/dnsmasq/src/network.c:59,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:67,1
    - Dst: alloca
      Src: /src/dnsmasq/src/network.c:76,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:78,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:85,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:86,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:90,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - fd
    - index
    - name
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 95
    functionName: indextoname
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 13
    functionsReached:
    - getzoneid
    - ioctl
    - if_indextoname
    - safe_strncpy
    - alloca
    linkageType: ''
    returnType: int
    signature: int indextoname(int fd, int index, char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: if_indextoname
      Src: /src/dnsmasq/src/network.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - fd
    - index
    - name
    argTypes:
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: indextoname
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 14
    functionsReached:
    - if_indextoname
    linkageType: ''
    returnType: int
    signature: int indextoname(int fd, int index, char *name)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/network.c:125,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/network.c:142,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/network.c:153,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:163,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/network.c:171,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 42
    argCount: 4
    argNames:
    - family
    - addr
    - name
    - auth
    argTypes:
    - int
    - union all_addr*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 182
    functionName: iface_check
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 7
    functionsReached:
    - strcmp
    - wildcard_match
    - IN6_ARE_ADDR_EQUAL
    linkageType: ''
    returnType: int
    signature: int iface_check(int family, union all_addr *addr, char *name, int *auth)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:195,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:196,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/network.c:207,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - family
    - addr
    - name
    argTypes:
    - int
    - int
    - union all_addr*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 212
    functionName: loopback_exception
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 2
    functionsReached:
    - safe_strncpy
    - IN6_ARE_ADDR_EQUAL
    - ioctl
    linkageType: ''
    returnType: int
    signature: int loopback_exception(int fd, int family, union all_addr *addr, char
      *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - index
    - family
    - addr
    argTypes:
    - int
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: label_exception
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int label_exception(int index, int family, union all_addr *addr)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:246,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/network.c:257,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:258,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:269,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:272,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:282,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/network.c:303,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/network.c:314,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:324,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:344,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/network.c:361,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:388,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/network.c:425,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:436,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/network.c:461,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:471,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/network.c:492,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:506,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:509,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:511,1
    - Dst: strlen
      Src: /src/dnsmasq/src/network.c:511,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/network.c:513,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:519,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/network.c:524,1
    - Dst: iface_check
      Src: /src/dnsmasq/src/network.c:528,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/network.c:540,1
    - Dst: wildcard_match
      Src: /src/dnsmasq/src/network.c:557,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:563,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:567,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:582,1
    - Dst: strlen
      Src: /src/dnsmasq/src/network.c:582,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/network.c:584,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:589,1
    CyclomaticComplexity: 84
    EdgeCount: 84
    ICount: 202
    argCount: 7
    argNames:
    - param
    - if_index
    - label
    - addr
    - netmask
    - prefixlen
    - iface_flags
    argTypes:
    - struct iface_param*
    - int
    - char*
    - union mysockaddr*
    - struct in_addr
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 595
    functionName: iface_allowed
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - strcpy
    - wildcard_match
    - strlen
    - ioctl
    - option_bool
    - whine_malloc
    - free
    - strncmp
    - IN6_ARE_ADDR_EQUAL
    - iface_check
    - indextoname
    - sockaddr_isequal
    - strcmp
    - IN6_IS_ADDR_LINKLOCAL
    linkageType: ''
    returnType: int
    signature: "int iface_allowed(struct iface_param *param, int if_index, char *label,\n\t\t\t
      union mysockaddr *addr, struct in_addr netmask, int prefixlen, int iface_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:609,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:615,1
    - Dst: IN6_IS_ADDR_LINKLOCAL
      Src: /src/dnsmasq/src/network.c:617,1
    - Dst: iface_allowed
      Src: /src/dnsmasq/src/network.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 8
    argNames:
    - local
    - prefix
    - scope
    - if_index
    - flags
    - preferred
    - valid
    - vparam
    argTypes:
    - struct in6_addr*
    - int
    - int
    - int
    - int
    - unsigned int
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 597
    functionDepth: 3
    functionLinenumber: 597
    functionLinenumberEnd: 623
    functionName: iface_allowed_v6
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - iface_allowed
    - IN6_IS_ADDR_LINKLOCAL
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: "int iface_allowed_v6(struct in6_addr *local, int prefix, \n\t\t\t
      \   int scope, int if_index, int flags, \n\t\t\t    unsigned int preferred,
      unsigned int valid, void *vparam)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:633,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:639,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/network.c:642,1
    - Dst: iface_allowed
      Src: /src/dnsmasq/src/network.c:644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - local
    - if_index
    - label
    - netmask
    - broadcast
    - vparam
    argTypes:
    - struct in_addr
    - int
    - char*
    - struct in_addr
    - struct in_addr
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 625
    functionDepth: 3
    functionLinenumber: 625
    functionLinenumberEnd: 645
    functionName: iface_allowed_v4
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - iface_allowed
    - ntohl
    - memset
    - htons
    linkageType: ''
    returnType: int
    signature: "int iface_allowed_v4(struct in_addr local, int if_index, char *label,\n\t\t\t
      \   struct in_addr netmask, struct in_addr broadcast, void *vparam)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/network.c:660,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:661,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 668
    functionName: clean_interfaces
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void clean_interfaces(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/network.c:680,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:704,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:705,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:705,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:712,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:714,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:716,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:718,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct listener*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 674
    functionDepth: 3
    functionLinenumber: 674
    functionLinenumberEnd: 720
    functionName: release_listener
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - close
    - my_syslog
    - _
    - sockaddr_isequal
    - free
    - prettyprint_addr
    linkageType: ''
    returnType: int
    signature: int release_listener(struct listener *l)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/network.c:751,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:764,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/network.c:765,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/network.c:768,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/network.c:836,1
    - Dst: iface_enumerate
      Src: /src/dnsmasq/src/network.c:841,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:847,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:849,1
    - Dst: release_listener
      Src: /src/dnsmasq/src/network.c:866,1
    - Dst: clean_interfaces
      Src: /src/dnsmasq/src/network.c:874,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 84
    argCount: 1
    argNames:
    - reset
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 722
    functionDepth: 4
    functionLinenumber: 722
    functionLinenumberEnd: 881
    functionName: enumerate_interfaces
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 4
    functionsReached:
    - release_listener
    - if_nametoindex
    - ioctl
    - option_bool
    - safe_strncpy
    - close
    - iface_enumerate
    - clean_interfaces
    - socket
    linkageType: ''
    returnType: int
    signature: int enumerate_interfaces(int reset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/dnsmasq/src/network.c:888,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/network.c:889,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 893
    functionName: fix_fd
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 6
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: int
    signature: int fix_fd(int fd)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/network.c:900,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:913,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:914,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:914,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/network.c:915,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:916,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:919,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:934,1
    - Dst: die
      Src: /src/dnsmasq/src/network.c:937,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:939,1
    - Dst: strerror
      Src: /src/dnsmasq/src/network.c:939,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:945,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/network.c:945,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:948,1
    - Dst: bind
      Src: /src/dnsmasq/src/network.c:951,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/network.c:951,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:958,1
    - Dst: listen
      Src: /src/dnsmasq/src/network.c:961,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:966,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:969,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:972,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:973,1
    - Dst: set_ipv6pktinfo
      Src: /src/dnsmasq/src/network.c:978,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 50
    argCount: 3
    argNames:
    - addr
    - type
    - dienow
    argTypes:
    - union mysockaddr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 895
    functionDepth: 4
    functionLinenumber: 895
    functionLinenumberEnd: 982
    functionName: make_sock
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - set_ipv6pktinfo
    - option_bool
    - bind
    - sprintf
    - die
    - close
    - my_syslog
    - _
    - fix_fd
    - sa_len
    - strerror
    - listen
    - setsockopt
    - socket
    - prettyprint_addr
    linkageType: ''
    returnType: int
    signature: int make_sock(union mysockaddr *addr, int type, int dienow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:994,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:997,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1004,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 1009
    functionName: set_ipv6pktinfo
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 3
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int set_ipv6pktinfo(int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1034,1
    - Dst: getsockopt
      Src: /src/dnsmasq/src/network.c:1035,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/network.c:1038,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/network.c:1038,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/network.c:1046,1
    - Dst: set_ipv6pktinfo
      Src: /src/dnsmasq/src/network.c:1065,1
    - Dst: getsockopt
      Src: /src/dnsmasq/src/network.c:1066,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/dnsmasq/src/network.c:1069,1
    - Dst: CMSG_NXTHDR
      Src: /src/dnsmasq/src/network.c:1069,1
    - Dst: CMSG_DATA
      Src: /src/dnsmasq/src/network.c:1076,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 2
    argNames:
    - fd
    - af
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1013
    functionDepth: 1
    functionLinenumber: 1013
    functionLinenumberEnd: 1085
    functionName: tcp_interface
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - set_ipv6pktinfo
    - CMSG_NXTHDR
    - CMSG_DATA
    - CMSG_FIRSTHDR
    - getsockopt
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int tcp_interface(int fd, int af)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: make_sock
      Src: /src/dnsmasq/src/network.c:1096,1
    - Dst: make_sock
      Src: /src/dnsmasq/src/network.c:1097,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1107,1
    - Dst: make_sock
      Src: /src/dnsmasq/src/network.c:1108,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1114,1
    - Dst: make_sock
      Src: /src/dnsmasq/src/network.c:1115,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/network.c:1123,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - addr
    - do_tftp
    - dienow
    argTypes:
    - union mysockaddr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1087
    functionDepth: 5
    functionLinenumber: 1087
    functionLinenumberEnd: 1134
    functionName: create_listeners
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - make_sock
    - safe_malloc
    - htons
    linkageType: ''
    returnType: struct listener
    signature: struct listener *create_listeners(union mysockaddr *addr, int do_tftp,
      int dienow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1141,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1147,1
    - Dst: create_listeners
      Src: /src/dnsmasq/src/network.c:1149,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1149,1
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1151,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1157,1
    - Dst: create_listeners
      Src: /src/dnsmasq/src/network.c:1159,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1136
    functionDepth: 6
    functionLinenumber: 1136
    functionLinenumberEnd: 1166
    functionName: create_wildcard_listeners
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - option_bool
    - create_listeners
    - memset
    - htons
    linkageType: ''
    returnType: void
    signature: void create_wildcard_listeners(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/network.c:1172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - addr
    argTypes:
    - union mysockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1175
    functionName: find_listener
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - sockaddr_isequal
    linkageType: ''
    returnType: struct listener
    signature: struct listener *find_listener(union mysockaddr *addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: find_listener
      Src: /src/dnsmasq/src/network.c:1187,1
    - Dst: create_listeners::create_listeners
      Src: /src/dnsmasq/src/network.c:1193,1
    - Dst: iface::iface
      Src: /src/dnsmasq/src/network.c:1197,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:1205,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1206,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1206,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1225,1
    - Dst: create_listeners::create_listeners
      Src: /src/dnsmasq/src/network.c:1225,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:1232,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1233,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1233,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - dienow
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1177
    functionDepth: 6
    functionLinenumber: 1177
    functionLinenumberEnd: 1236
    functionName: create_bound_listeners
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - create_listeners::create_listeners
    - option_bool
    - find_listener
    - my_syslog
    - _
    - iface::iface
    - prettyprint_addr
    linkageType: ''
    returnType: void
    signature: void create_bound_listeners(int dienow)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: private_net
      Src: /src/dnsmasq/src/network.c:1261,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/network.c:1263,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1265,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1266,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1273,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1251
    functionDepth: 3
    functionLinenumber: 1251
    functionLinenumberEnd: 1274
    functionName: warn_bound_listeners
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - private_net
    - my_syslog
    - _
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void warn_bound_listeners(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1282,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1276
    functionDepth: 3
    functionLinenumber: 1276
    functionLinenumberEnd: 1283
    functionName: warn_wild_labels
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void warn_wild_labels(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1291,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1285
    functionDepth: 3
    functionLinenumber: 1285
    functionLinenumberEnd: 1292
    functionName: warn_int_names
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void warn_int_names(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1294
    functionDepth: 1
    functionLinenumber: 1294
    functionLinenumberEnd: 1304
    functionName: is_dad_listeners
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - option_bool
    linkageType: ''
    returnType: int
    signature: int is_dad_listeners(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/dnsmasq/src/network.c:1329,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1332,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/network.c:1335,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1338,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/network.c:1341,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1344,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1349,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1354,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1354,1
    - Dst: die
      Src: /src/dnsmasq/src/network.c:1358,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1360,1
    - Dst: strerror
      Src: /src/dnsmasq/src/network.c:1360,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 28
    argCount: 1
    argNames:
    - dienow
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1307
    functionDepth: 4
    functionLinenumber: 1307
    functionLinenumberEnd: 1364
    functionName: join_multicast
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - die
    - my_syslog
    - _
    - strerror
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void join_multicast(int dienow)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1389,1
    - Dst: rand16
      Src: /src/dnsmasq/src/network.c:1389,1
    - Dst: IN6_IS_ADDR_UNSPECIFIED
      Src: /src/dnsmasq/src/network.c:1403,1
    - Dst: bind
      Src: /src/dnsmasq/src/network.c:1408,1
    - Dst: sa_len
      Src: /src/dnsmasq/src/network.c:1408,1
    - Dst: ntohs
      Src: /src/dnsmasq/src/network.c:1420,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1423,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1426,1
    - Dst: rand16
      Src: /src/dnsmasq/src/network.c:1426,1
    - Dst: htonl
      Src: /src/dnsmasq/src/network.c:1434,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1435,1
    - Dst: htonl
      Src: /src/dnsmasq/src/network.c:1441,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1442,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1450,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 46
    argCount: 5
    argNames:
    - fd
    - addr
    - intname
    - ifindex
    - is_tcp
    argTypes:
    - int
    - union mysockaddr*
    - char*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1367
    functionDepth: 3
    functionLinenumber: 1367
    functionLinenumberEnd: 1455
    functionName: local_bind
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 2
    functionsReached:
    - IN6_IS_ADDR_UNSPECIFIED
    - rand16
    - bind
    - ntohs
    - sa_len
    - htons
    - htonl
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int local_bind(int fd, union mysockaddr *addr, char *intname, unsigned
      int ifindex, int is_tcp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1471,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1475,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/network.c:1482,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:1483,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/network.c:1488,1
    - Dst: socket
      Src: /src/dnsmasq/src/network.c:1491,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:1493,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/network.c:1497,1
    - Dst: local_bind
      Src: /src/dnsmasq/src/network.c:1498,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/network.c:1498,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:1501,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:1502,1
    - Dst: safe_strncpy
      Src: /src/dnsmasq/src/network.c:1507,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 3
    argNames:
    - addr
    - intname
    - ifindex
    argTypes:
    - union mysockaddr*
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1457
    functionDepth: 4
    functionLinenumber: 1457
    functionLinenumberEnd: 1515
    functionName: allocate_sfd
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - local_bind
    - fix_fd
    - whine_malloc
    - free
    - socket
    - close
    - safe_strncpy
    - htons
    - sockaddr_isequal
    - strcmp
    - setsockopt
    linkageType: ''
    returnType: struct serverfd
    signature: struct serverfd *allocate_sfd(union mysockaddr *addr, char *intname,
      unsigned int ifindex)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1527,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1530,1
    - Dst: allocate_sfd
      Src: /src/dnsmasq/src/network.c:1534,1
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1537,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1540,1
    - Dst: allocate_sfd
      Src: /src/dnsmasq/src/network.c:1544,1
    - Dst: allocate_sfd
      Src: /src/dnsmasq/src/network.c:1549,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1551,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:1553,1
    - Dst: strcat
      Src: /src/dnsmasq/src/network.c:1556,1
    - Dst: strcat
      Src: /src/dnsmasq/src/network.c:1557,1
    - Dst: die
      Src: /src/dnsmasq/src/network.c:1559,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1559,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1519
    functionDepth: 5
    functionLinenumber: 1519
    functionLinenumberEnd: 1562
    functionName: pre_allocate_sfds
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - memset
    - strcat
    - allocate_sfd
    - option_bool
    - die
    - _
    - htons
    - prettyprint_addr
    linkageType: ''
    returnType: void
    signature: void pre_allocate_sfds(void)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: loop_send_probes
      Src: /src/dnsmasq/src/network.c:1576,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/network.c:1580,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1583,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/network.c:1584,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/network.c:1592,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/network.c:1603,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1607,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1607,1
    - Dst: allocate_sfd
      Src: /src/dnsmasq/src/network.c:1614,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1617,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1618,1
    - Dst: strerror
      Src: /src/dnsmasq/src/network.c:1619,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1628,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1628,1
    - Dst: strlen
      Src: /src/dnsmasq/src/network.c:1633,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1638,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1638,1
    - Dst: strlen
      Src: /src/dnsmasq/src/network.c:1639,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1640,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1642,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1644,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1644,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1648,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1648,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1651,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1651,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1653,1
    - Dst: strlen
      Src: /src/dnsmasq/src/network.c:1664,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1668,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1668,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1671,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1671,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1675,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1675,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1677,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1677,1
    - Dst: close
      Src: /src/dnsmasq/src/network.c:1686,1
    - Dst: free
      Src: /src/dnsmasq/src/network.c:1687,1
    - Dst: cleanup_servers
      Src: /src/dnsmasq/src/network.c:1693,1
    - Dst: build_server_array
      Src: /src/dnsmasq/src/network.c:1694,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 71
    argCount: 1
    argNames:
    - no_loop_check
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1564
    functionDepth: 5
    functionLinenumber: 1564
    functionLinenumberEnd: 1695
    functionName: check_servers
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 3
    functionsReached:
    - allocate_sfd
    - option_bool
    - cleanup_servers
    - loop_send_probes
    - mark_servers
    - my_syslog
    - close
    - _
    - enumerate_interfaces
    - strerror
    - sockaddr_isequal
    - free
    - strlen
    - build_server_array
    - prettyprint_addr
    linkageType: ''
    returnType: void
    signature: void check_servers(int no_loop_check)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/dnsmasq/src/network.c:1706,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/network.c:1708,1
    - Dst: _
      Src: /src/dnsmasq/src/network.c:1708,1
    - Dst: strerror
      Src: /src/dnsmasq/src/network.c:1708,1
    - Dst: mark_servers
      Src: /src/dnsmasq/src/network.c:1712,1
    - Dst: fgets
      Src: /src/dnsmasq/src/network.c:1714,1
    - Dst: strtok
      Src: /src/dnsmasq/src/network.c:1717,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:1721,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/network.c:1721,1
    - Dst: strtok
      Src: /src/dnsmasq/src/network.c:1723,1
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1726,1
    - Dst: memset
      Src: /src/dnsmasq/src/network.c:1727,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/network.c:1729,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1735,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1737,1
    - Dst: strchr
      Src: /src/dnsmasq/src/network.c:1742,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/src/network.c:1747,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/network.c:1750,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1757,1
    - Dst: htons
      Src: /src/dnsmasq/src/network.c:1760,1
    - Dst: add_update_server
      Src: /src/dnsmasq/src/network.c:1767,1
    - Dst: fclose
      Src: /src/dnsmasq/src/network.c:1771,1
    - Dst: cleanup_servers
      Src: /src/dnsmasq/src/network.c:1772,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1699
    functionDepth: 4
    functionLinenumber: 1699
    functionLinenumberEnd: 1775
    functionName: reload_servers
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - strtok
    - memset
    - if_nametoindex
    - strcmp
    - inet_pton
    - mark_servers
    - my_syslog
    - add_update_server
    - _
    - fclose
    - strerror
    - htons
    - strchr
    - fopen
    - fgets
    - cleanup_servers
    linkageType: ''
    returnType: int
    signature: int reload_servers(char *fname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1786,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1786,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/network.c:1788,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/network.c:1790,1
    - Dst: create_bound_listeners
      Src: /src/dnsmasq/src/network.c:1791,1
    - Dst: join_multicast
      Src: /src/dnsmasq/src/network.c:1801,1
    - Dst: dhcp_construct_contexts
      Src: /src/dnsmasq/src/network.c:1804,1
    - Dst: lease_find_interfaces
      Src: /src/dnsmasq/src/network.c:1807,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1778
    functionDepth: 7
    functionLinenumber: 1778
    functionLinenumberEnd: 1812
    functionName: newaddress
    functionSourceFile: /src/dnsmasq/src/network.c
    functionUses: 0
    functionsReached:
    - join_multicast
    - option_bool
    - dhcp_construct_contexts
    - lease_find_interfaces
    - enumerate_interfaces
    - create_bound_listeners
    linkageType: ''
    returnType: void
    signature: void newaddress(time_t now)
  - BBCount: 194
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/dnsmasq/src/dnsmasq.c:56,1
    - Dst: setlocale
      Src: /src/dnsmasq/src/dnsmasq.c:89,1
    - Dst: bindtextdomain
      Src: /src/dnsmasq/src/dnsmasq.c:92,1
    - Dst: textdomain
      Src: /src/dnsmasq/src/dnsmasq.c:93,1
    - Dst: sigemptyset
      Src: /src/dnsmasq/src/dnsmasq.c:98,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:99,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:100,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:101,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:102,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:103,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:104,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:105,1
    - Dst: sigaction
      Src: /src/dnsmasq/src/dnsmasq.c:109,1
    - Dst: umask
      Src: /src/dnsmasq/src/dnsmasq.c:111,1
    - Dst: rand_init
      Src: /src/dnsmasq/src/dnsmasq.c:113,1
    - Dst: read_opts
      Src: /src/dnsmasq/src/dnsmasq.c:115,1
    - Dst: kernel_version
      Src: /src/dnsmasq/src/dnsmasq.c:118,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:129,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:131,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:132,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:135,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:142,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:143,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:146,1
    - Dst: open
      Src: /src/dnsmasq/src/dnsmasq.c:165,1
    - Dst: close_fds
      Src: /src/dnsmasq/src/dnsmasq.c:168,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:172,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:175,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:180,1
    - Dst: set_option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:183,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:184,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:190,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:190,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:193,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:205,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:205,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:208,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:208,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:210,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:210,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:215,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:216,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:216,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:220,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:223,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:223,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:228,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:229,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:229,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:234,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:234,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:239,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:239,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:244,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:244,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:248,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:249,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:249,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:253,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:254,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:254,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:265,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:265,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:269,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:269,1
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dnsmasq.c:271,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:276,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:276,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:281,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:281,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:291,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:301,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:301,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:315,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:315,1
    - Dst: dhcp_common_init
      Src: /src/dnsmasq/src/dnsmasq.c:317,1
    - Dst: lease_init
      Src: /src/dnsmasq/src/dnsmasq.c:319,1
    - Dst: dhcp_init
      Src: /src/dnsmasq/src/dnsmasq.c:324,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:327,1
    - Dst: ra_init
      Src: /src/dnsmasq/src/dnsmasq.c:338,1
    - Dst: dhcp6_init
      Src: /src/dnsmasq/src/dnsmasq.c:346,1
    - Dst: ipset_init
      Src: /src/dnsmasq/src/dnsmasq.c:354,1
    - Dst: nftset_init
      Src: /src/dnsmasq/src/dnsmasq.c:364,1
    - Dst: netlink_init
      Src: /src/dnsmasq/src/dnsmasq.c:372,1
    - Dst: route_init
      Src: /src/dnsmasq/src/dnsmasq.c:374,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:377,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:377,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:378,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:378,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:380,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:380,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:381,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:381,1
    - Dst: lease_calc_fqdns
      Src: /src/dnsmasq/src/dnsmasq.c:387,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:390,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:390,1
    - Dst: create_bound_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:392,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:394,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:397,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:397,1
    - Dst: whichdevice
      Src: /src/dnsmasq/src/dnsmasq.c:401,1
    - Dst: bind_dhcp_devices
      Src: /src/dnsmasq/src/dnsmasq.c:403,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:404,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:404,1
    - Dst: create_wildcard_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:408,1
    - Dst: join_multicast
      Src: /src/dnsmasq/src/dnsmasq.c:413,1
    - Dst: lease_make_duid
      Src: /src/dnsmasq/src/dnsmasq.c:416,1
    - Dst: cache_init
      Src: /src/dnsmasq/src/dnsmasq.c:421,1
    - Dst: blockdata_init
      Src: /src/dnsmasq/src/dnsmasq.c:422,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:430,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:432,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:433,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:440,1
    - Dst: inotify_dnsmasq_init
      Src: /src/dnsmasq/src/dnsmasq.c:442,1
    - Dst: dump_init
      Src: /src/dnsmasq/src/dnsmasq.c:449,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:453,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:453,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:456,1
    - Dst: dbus_init
      Src: /src/dnsmasq/src/dnsmasq.c:460,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:461,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:461,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:464,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:464,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:467,1
    - Dst: ubus_init
      Src: /src/dnsmasq/src/dnsmasq.c:471,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:472,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:472,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:475,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:475,1
    - Dst: pre_allocate_sfds
      Src: /src/dnsmasq/src/dnsmasq.c:479,1
    - Dst: getpwnam
      Src: /src/dnsmasq/src/dnsmasq.c:489,1
    - Dst: getpwnam
      Src: /src/dnsmasq/src/dnsmasq.c:499,1
    - Dst: getgrnam
      Src: /src/dnsmasq/src/dnsmasq.c:501,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:505,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:505,1
    - Dst: getgrnam
      Src: /src/dnsmasq/src/dnsmasq.c:510,1
    - Dst: getgrgid
      Src: /src/dnsmasq/src/dnsmasq.c:511,1
    - Dst: is_dad_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:523,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:523,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:524,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:536,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:544,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:556,1
    - Dst: memset
      Src: /src/dnsmasq/src/dnsmasq.c:559,1
    - Dst: capget
      Src: /src/dnsmasq/src/dnsmasq.c:560,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dnsmasq.c:570,1
    - Dst: capget
      Src: /src/dnsmasq/src/dnsmasq.c:571,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:583,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:583,1
    - Dst: memset
      Src: /src/dnsmasq/src/dnsmasq.c:586,1
    - Dst: safe_pipe
      Src: /src/dnsmasq/src/dnsmasq.c:600,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:605,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:609,1
    - Dst: chdir
      Src: /src/dnsmasq/src/dnsmasq.c:614,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:615,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:615,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:617,1
    - Dst: safe_pipe
      Src: /src/dnsmasq/src/dnsmasq.c:623,1
    - Dst: fork
      Src: /src/dnsmasq/src/dnsmasq.c:625,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:627,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:635,1
    - Dst: read_event
      Src: /src/dnsmasq/src/dnsmasq.c:638,1
    - Dst: fatal_event
      Src: /src/dnsmasq/src/dnsmasq.c:639,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:641,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:644,1
    - Dst: setsid
      Src: /src/dnsmasq/src/dnsmasq.c:648,1
    - Dst: fork
      Src: /src/dnsmasq/src/dnsmasq.c:650,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:651,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:654,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dnsmasq.c:662,1
    - Dst: getpid
      Src: /src/dnsmasq/src/dnsmasq.c:662,1
    - Dst: unlink
      Src: /src/dnsmasq/src/dnsmasq.c:683,1
    - Dst: open
      Src: /src/dnsmasq/src/dnsmasq.c:685,1
    - Dst: getuid
      Src: /src/dnsmasq/src/dnsmasq.c:688,1
    - Dst: getuid
      Src: /src/dnsmasq/src/dnsmasq.c:699,1
    - Dst: fchown
      Src: /src/dnsmasq/src/dnsmasq.c:699,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:702,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dnsmasq.c:702,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:706,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:713,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:714,1
    - Dst: log_start
      Src: /src/dnsmasq/src/dnsmasq.c:719,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:721,1
    - Dst: open
      Src: /src/dnsmasq/src/dnsmasq.c:724,1
    - Dst: dup2
      Src: /src/dnsmasq/src/dnsmasq.c:727,1
    - Dst: dup2
      Src: /src/dnsmasq/src/dnsmasq.c:728,1
    - Dst: dup2
      Src: /src/dnsmasq/src/dnsmasq.c:729,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:730,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:740,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:741,1
    - Dst: create_helper
      Src: /src/dnsmasq/src/dnsmasq.c:743,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:746,1
    - Dst: getuid
      Src: /src/dnsmasq/src/dnsmasq.c:746,1
    - Dst: setgroups
      Src: /src/dnsmasq/src/dnsmasq.c:753,1
    - Dst: setgid
      Src: /src/dnsmasq/src/dnsmasq.c:754,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:756,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:757,1
    - Dst: capset
      Src: /src/dnsmasq/src/dnsmasq.c:767,1
    - Dst: prctl
      Src: /src/dnsmasq/src/dnsmasq.c:767,1
    - Dst: priv_str_to_set
      Src: /src/dnsmasq/src/dnsmasq.c:774,1
    - Dst: priv_addset
      Src: /src/dnsmasq/src/dnsmasq.c:775,1
    - Dst: priv_addset
      Src: /src/dnsmasq/src/dnsmasq.c:776,1
    - Dst: priv_inverse
      Src: /src/dnsmasq/src/dnsmasq.c:781,1
    - Dst: setppriv
      Src: /src/dnsmasq/src/dnsmasq.c:783,1
    - Dst: priv_freeset
      Src: /src/dnsmasq/src/dnsmasq.c:788,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:794,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:795,1
    - Dst: setuid
      Src: /src/dnsmasq/src/dnsmasq.c:799,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:801,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:802,1
    - Dst: capset
      Src: /src/dnsmasq/src/dnsmasq.c:810,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:812,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:813,1
    - Dst: free
      Src: /src/dnsmasq/src/dnsmasq.c:821,1
    - Dst: free
      Src: /src/dnsmasq/src/dnsmasq.c:822,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:823,1
    - Dst: prctl
      Src: /src/dnsmasq/src/dnsmasq.c:824,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:828,1
    - Dst: opendir
      Src: /src/dnsmasq/src/dnsmasq.c:835,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:838,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:840,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:841,1
    - Dst: closedir
      Src: /src/dnsmasq/src/dnsmasq.c:845,1
    - Dst: opendir
      Src: /src/dnsmasq/src/dnsmasq.c:851,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:854,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:856,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:857,1
    - Dst: closedir
      Src: /src/dnsmasq/src/dnsmasq.c:861,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:867,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:867,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:872,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:872,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:874,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:874,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:877,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:877,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:879,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:880,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:880,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:881,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:882,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:882,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:885,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:885,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:891,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:894,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnsmasq.c:894,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:898,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:901,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:901,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:903,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:903,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:908,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:911,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:911,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:913,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:913,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:918,1
    - Dst: setup_timestamp
      Src: /src/dnsmasq/src/dnsmasq.c:926,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:928,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:929,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:932,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:933,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:933,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:935,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:935,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:937,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:938,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:939,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:939,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:942,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:942,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:945,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:946,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:946,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:952,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:952,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnsmasq.c:953,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:957,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:957,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:960,1
    - Dst: warn_bound_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:961,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:962,1
    - Dst: warn_wild_labels
      Src: /src/dnsmasq/src/dnsmasq.c:963,1
    - Dst: warn_int_names
      Src: /src/dnsmasq/src/dnsmasq.c:965,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:967,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:970,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:970,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:972,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:975,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:975,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:980,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:981,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:981,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:984,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:984,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:989,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:989,1
    - Dst: log_context
      Src: /src/dnsmasq/src/dnsmasq.c:994,1
    - Dst: log_relay
      Src: /src/dnsmasq/src/dnsmasq.c:997,1
    - Dst: log_context
      Src: /src/dnsmasq/src/dnsmasq.c:1001,1
    - Dst: log_relay
      Src: /src/dnsmasq/src/dnsmasq.c:1004,1
    - Dst: dhcp_construct_contexts
      Src: /src/dnsmasq/src/dnsmasq.c:1007,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1009,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1010,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1010,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1015,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1015,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1018,1
    - Dst: lease_find_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:1023,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1027,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1031,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1032,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1032,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1034,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1034,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1035,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1035,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1038,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1038,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1042,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1042,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1053,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1067,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1068,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1076,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/dnsmasq.c:1079,1
    - Dst: getpid
      Src: /src/dnsmasq/src/dnsmasq.c:1081,1
    - Dst: poll_resolv
      Src: /src/dnsmasq/src/dnsmasq.c:1087,1
    - Dst: fast_retry
      Src: /src/dnsmasq/src/dnsmasq.c:1092,1
    - Dst: poll_reset
      Src: /src/dnsmasq/src/dnsmasq.c:1094,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1097,1
    - Dst: is_dad_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1102,1
    - Dst: set_dns_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1107,1
    - Dst: set_tftp_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1110,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1114,1
    - Dst: set_dbus_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1115,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1119,1
    - Dst: set_ubus_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1120,1
    - Dst: bind_dhcp_devices
      Src: /src/dnsmasq/src/dnsmasq.c:1125,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1130,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1130,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1137,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1139,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1145,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1148,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1153,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1157,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1159,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1162,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1166,1
    - Dst: do_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1166,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1170,1
    - Dst: find_mac
      Src: /src/dnsmasq/src/dnsmasq.c:1171,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1172,1
    - Dst: do_arp_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1172,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1175,1
    - Dst: do_tftp_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1175,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1179,1
    - Dst: do_snoop_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1179,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1182,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1183,1
    - Dst: do_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1187,1
    - Dst: do_arp_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1190,1
    - Dst: do_tftp_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1193,1
    - Dst: set_log_writer
      Src: /src/dnsmasq/src/dnsmasq.c:1201,1
    - Dst: do_poll
      Src: /src/dnsmasq/src/dnsmasq.c:1203,1
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dnsmasq.c:1206,1
    - Dst: check_log_writer
      Src: /src/dnsmasq/src/dnsmasq.c:1208,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:1211,1
    - Dst: is_dad_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1215,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:1217,1
    - Dst: create_bound_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1219,1
    - Dst: warn_bound_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1220,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1224,1
    - Dst: netlink_multicast
      Src: /src/dnsmasq/src/dnsmasq.c:1225,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1227,1
    - Dst: route_sock
      Src: /src/dnsmasq/src/dnsmasq.c:1228,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1232,1
    - Dst: inotify_check
      Src: /src/dnsmasq/src/dnsmasq.c:1232,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1234,1
    - Dst: poll_resolv
      Src: /src/dnsmasq/src/dnsmasq.c:1235,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:1241,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:1242,1
    - Dst: poll_resolv
      Src: /src/dnsmasq/src/dnsmasq.c:1247,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1252,1
    - Dst: async_event
      Src: /src/dnsmasq/src/dnsmasq.c:1253,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1257,1
    - Dst: dbus_init
      Src: /src/dnsmasq/src/dnsmasq.c:1261,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1264,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1264,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1267,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1267,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1268,1
    - Dst: check_dbus_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1272,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1278,1
    - Dst: ubus_init
      Src: /src/dnsmasq/src/dnsmasq.c:1282,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1285,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1285,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1288,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1288,1
    - Dst: reset_option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1289,1
    - Dst: check_ubus_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1293,1
    - Dst: check_dns_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1298,1
    - Dst: check_tftp_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:1301,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1307,1
    - Dst: dhcp_packet
      Src: /src/dnsmasq/src/dnsmasq.c:1308,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1309,1
    - Dst: dhcp_packet
      Src: /src/dnsmasq/src/dnsmasq.c:1310,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1314,1
    - Dst: dhcp6_packet
      Src: /src/dnsmasq/src/dnsmasq.c:1315,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1317,1
    - Dst: icmp6_packet
      Src: /src/dnsmasq/src/dnsmasq.c:1318,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1322,1
    - Dst: helper_write
      Src: /src/dnsmasq/src/dnsmasq.c:1323,1
    CyclomaticComplexity: 311
    EdgeCount: 311
    ICount: 597
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 44
    functionDepth: 11
    functionLinenumber: 44
    functionLinenumberEnd: 1328
    functionName: main
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 24
    functionsReached:
    - capset
    - log_context
    - dhcp6_init
    - check_log_writer
    - fatal_event
    - helper_write
    - do_snoop_script_run
    - getpwnam
    - getpid
    - do_tftp_script_run
    - closedir
    - safe_malloc
    - priv_inverse
    - priv_addset
    - do_arp_script_run
    - setuid
    - dhcp_construct_contexts
    - dhcp_packet
    - fork
    - _exit
    - set_option_bool
    - route_init
    - warn_bound_listeners
    - dbus_init
    - lease_make_duid
    - check_dns_listeners
    - ubus_init
    - setgid
    - umask
    - close_fds
    - reset_option_bool
    - netlink_init
    - create_wildcard_listeners
    - die
    - close
    - read_opts
    - warn_int_names
    - setlocale
    - kernel_version
    - set_dns_listeners
    - lease_find_interfaces
    - bindtextdomain
    - safe_pipe
    - _
    - dhcp_init
    - helper_buf_empty
    - rand_init
    - unlink
    - poll_reset
    - is_dad_listeners
    - create_bound_listeners
    - async_event
    - cache_init
    - memset
    - difftime
    - route_sock
    - dup2
    - bind_dhcp_devices
    - join_multicast
    - nftset_init
    - chdir
    - opendir
    - check_ubus_listeners
    - sigemptyset
    - check_servers
    - sigaction
    - do_script_run
    - setppriv
    - check_dbus_listeners
    - set_dbus_listeners
    - lease_init
    - set_ubus_listeners
    - log_start
    - textdomain
    - whichdevice
    - sprintf
    - poll_check
    - option_bool
    - lease_calc_fqdns
    - netlink_multicast
    - my_syslog
    - enumerate_interfaces
    - check_tftp_listeners
    - prctl
    - dnsmasq_time
    - dhcp6_packet
    - priv_freeset
    - getuid
    - sysconf
    - capget
    - getgrnam
    - setup_timestamp
    - read_write
    - set_log_writer
    - do_poll
    - read_event
    - setsid
    - priv_str_to_set
    - setgroups
    - poll_resolv
    - strerror
    - fchown
    - warn_wild_labels
    - getgrgid
    - strlen
    - poll_listen
    - dump_init
    - set_tftp_listeners
    - create_helper
    - send_event
    - log_relay
    - dhcp_common_init
    - blockdata_init
    - fast_retry
    - find_mac
    - inotify_check
    - inotify_dnsmasq_init
    - open
    - free
    - ipset_init
    - icmp6_packet
    - pre_allocate_sfds
    - ra_init
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/dnsmasq/src/dnsmasq.c:1337,1
    - Dst: getpid
      Src: /src/dnsmasq/src/dnsmasq.c:1339,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:1343,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1366,1
    - Dst: exit
      Src: /src/dnsmasq/src/dnsmasq.c:1367,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:1374,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1330
    functionDepth: 1
    functionLinenumber: 1330
    functionLinenumberEnd: 1377
    functionName: sig_handler
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 0
    functionsReached:
    - option_bool
    - exit
    - getpid
    - _exit
    - send_event
    linkageType: ''
    returnType: void
    signature: void sig_handler(int sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:1385,1
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:1386,1
    - Dst: alarm
      Src: /src/dnsmasq/src/dnsmasq.c:1388,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:1388,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - event
    - now
    argTypes:
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1390
    functionName: send_alarm
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 2
    functionsReached:
    - difftime
    - send_event
    - alarm
    linkageType: ''
    returnType: void
    signature: void send_alarm(time_t event, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_event
      Src: /src/dnsmasq/src/dnsmasq.c:1394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1392
    functionDepth: 1
    functionLinenumber: 1392
    functionLinenumberEnd: 1395
    functionName: queue_event
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 3
    functionsReached:
    - send_event
    linkageType: ''
    returnType: void
    signature: void queue_event(int event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/dnsmasq.c:1404,1
    - Dst: fatal_event
      Src: /src/dnsmasq/src/dnsmasq.c:1413,1
    - Dst: writev
      Src: /src/dnsmasq/src/dnsmasq.c:1417,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - fd
    - event
    - data
    - msg
    argTypes:
    - int
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1397
    functionDepth: 1
    functionLinenumber: 1397
    functionLinenumberEnd: 1418
    functionName: send_event
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 6
    functionsReached:
    - fatal_event
    - writev
    - strlen
    linkageType: ''
    returnType: void
    signature: void send_event(int fd, int event, int data, char *msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:1426,1
    - Dst: malloc
      Src: /src/dnsmasq/src/dnsmasq.c:1432,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:1433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - fd
    - evp
    - msg
    argTypes:
    - int
    - struct event_desc*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1440
    functionName: read_event
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - read_write
    - malloc
    linkageType: ''
    returnType: int
    signature: int read_event(int fd, struct event_desc *evp, char **msg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/dnsmasq/src/dnsmasq.c:1449,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1452,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1452,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1456,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1456,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1460,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1460,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1464,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1464,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1468,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1468,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1472,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1472,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1476,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1476,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1480,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1480,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1484,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1484,1
    - Dst: die
      Src: /src/dnsmasq/src/dnsmasq.c:1488,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 2
    argNames:
    - ev
    - msg
    argTypes:
    - struct event_desc*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1442
    functionDepth: 4
    functionLinenumber: 1442
    functionLinenumberEnd: 1490
    functionName: fatal_event
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 2
    functionsReached:
    - exit
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void fatal_event(struct event_desc *ev, char *msg)
  - BBCount: 43
    BranchProfiles: []
    Callsites:
    - Dst: read_event
      Src: /src/dnsmasq/src/dnsmasq.c:1502,1
    - Dst: clear_cache_and_reload
      Src: /src/dnsmasq/src/dnsmasq.c:1511,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1515,1
    - Dst: reload_servers
      Src: /src/dnsmasq/src/dnsmasq.c:1517,1
    - Dst: read_servers_file
      Src: /src/dnsmasq/src/dnsmasq.c:1523,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/dnsmasq.c:1528,1
    - Dst: rerun_scripts
      Src: /src/dnsmasq/src/dnsmasq.c:1532,1
    - Dst: dump_cache
      Src: /src/dnsmasq/src/dnsmasq.c:1538,1
    - Dst: lease_prune
      Src: /src/dnsmasq/src/dnsmasq.c:1545,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dnsmasq.c:1546,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dnsmasq.c:1547,1
    - Dst: send_alarm
      Src: /src/dnsmasq/src/dnsmasq.c:1552,1
    - Dst: periodic_ra
      Src: /src/dnsmasq/src/dnsmasq.c:1552,1
    - Dst: waitpid
      Src: /src/dnsmasq/src/dnsmasq.c:1559,1
    - Dst: WIFEXITED
      Src: /src/dnsmasq/src/dnsmasq.c:1571,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1576,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1576,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1579,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1592,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1592,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1596,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1596,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1600,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1600,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnsmasq.c:1601,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1605,1
    - Dst: free
      Src: /src/dnsmasq/src/dnsmasq.c:1606,1
    - Dst: fatal_event
      Src: /src/dnsmasq/src/dnsmasq.c:1614,1
    - Dst: log_reopen
      Src: /src/dnsmasq/src/dnsmasq.c:1623,1
    - Dst: newaddress
      Src: /src/dnsmasq/src/dnsmasq.c:1627,1
    - Dst: resend_query
      Src: /src/dnsmasq/src/dnsmasq.c:1631,1
    - Dst: poll_resolv
      Src: /src/dnsmasq/src/dnsmasq.c:1633,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1638,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1638,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1640,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1640,1
    - Dst: clear_cache_and_reload
      Src: /src/dnsmasq/src/dnsmasq.c:1642,1
    - Dst: kill
      Src: /src/dnsmasq/src/dnsmasq.c:1652,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/dnsmasq.c:1659,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dnsmasq.c:1660,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/dnsmasq.c:1660,1
    - Dst: helper_write
      Src: /src/dnsmasq/src/dnsmasq.c:1662,1
    - Dst: helper_buf_empty
      Src: /src/dnsmasq/src/dnsmasq.c:1663,1
    - Dst: do_script_run
      Src: /src/dnsmasq/src/dnsmasq.c:1663,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1664,1
    - Dst: fclose
      Src: /src/dnsmasq/src/dnsmasq.c:1669,1
    - Dst: utimes
      Src: /src/dnsmasq/src/dnsmasq.c:1675,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1676,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1676,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnsmasq.c:1676,1
    - Dst: unlink
      Src: /src/dnsmasq/src/dnsmasq.c:1681,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1685,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1688,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1688,1
    - Dst: flush_log
      Src: /src/dnsmasq/src/dnsmasq.c:1689,1
    - Dst: exit
      Src: /src/dnsmasq/src/dnsmasq.c:1690,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 119
    argCount: 2
    argNames:
    - pipe
    - now
    argTypes:
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1492
    functionDepth: 10
    functionLinenumber: 1492
    functionLinenumberEnd: 1692
    functionName: async_event
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - poll_resolv
    - lease_update_dns
    - close
    - kill
    - fclose
    - fatal_event
    - strerror
    - retry_send
    - check_servers
    - fcntl
    - do_script_run
    - lease_prune
    - lease_update_file
    - helper_write
    - log_reopen
    - reload_servers
    - send_alarm
    - utimes
    - rerun_scripts
    - periodic_ra
    - newaddress
    - option_bool
    - exit
    - my_syslog
    - read_servers_file
    - _
    - helper_buf_empty
    - WIFEXITED
    - free
    - unlink
    - dump_cache
    - flush_log
    - clear_cache_and_reload
    - resend_query
    - waitpid
    - read_event
    linkageType: ''
    returnType: void
    signature: void async_event(int pipe, time_t now)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1703,1
    - Dst: stat
      Src: /src/dnsmasq/src/dnsmasq.c:1707,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1716,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1716,1
    - Dst: strerror
      Src: /src/dnsmasq/src/dnsmasq.c:1716,1
    - Dst: poll_resolv
      Src: /src/dnsmasq/src/dnsmasq.c:1723,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:1734,1
    - Dst: reload_servers
      Src: /src/dnsmasq/src/dnsmasq.c:1745,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1747,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1747,1
    - Dst: check_servers
      Src: /src/dnsmasq/src/dnsmasq.c:1749,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1750,1
    - Dst: clear_cache_and_reload
      Src: /src/dnsmasq/src/dnsmasq.c:1751,1
    - Dst: build_server_array
      Src: /src/dnsmasq/src/dnsmasq.c:1759,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dnsmasq.c:1763,1
    - Dst: _
      Src: /src/dnsmasq/src/dnsmasq.c:1763,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 3
    argNames:
    - force
    - do_reload
    - now
    argTypes:
    - int
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1694
    functionDepth: 6
    functionLinenumber: 1694
    functionLinenumberEnd: 1768
    functionName: poll_resolv
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 3
    functionsReached:
    - stat
    - option_bool
    - difftime
    - poll_resolv
    - my_syslog
    - _
    - clear_cache_and_reload
    - strerror
    - reload_servers
    - check_servers
    - build_server_array
    linkageType: ''
    returnType: void
    signature: void poll_resolv(int force, int do_reload, time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cache_reload
      Src: /src/dnsmasq/src/dnsmasq.c:1775,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1780,1
    - Dst: dhcp_read_ethers
      Src: /src/dnsmasq/src/dnsmasq.c:1781,1
    - Dst: reread_dhcp
      Src: /src/dnsmasq/src/dnsmasq.c:1782,1
    - Dst: dhcp_update_configs
      Src: /src/dnsmasq/src/dnsmasq.c:1783,1
    - Dst: lease_update_from_configs
      Src: /src/dnsmasq/src/dnsmasq.c:1784,1
    - Dst: lease_update_file
      Src: /src/dnsmasq/src/dnsmasq.c:1785,1
    - Dst: lease_update_dns
      Src: /src/dnsmasq/src/dnsmasq.c:1786,1
    - Dst: send_alarm
      Src: /src/dnsmasq/src/dnsmasq.c:1792,1
    - Dst: periodic_ra
      Src: /src/dnsmasq/src/dnsmasq.c:1792,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1770
    functionDepth: 11
    functionLinenumber: 1770
    functionLinenumberEnd: 1795
    functionName: clear_cache_and_reload
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 3
    functionsReached:
    - dhcp_read_ethers
    - cache_reload
    - dhcp_update_configs
    - option_bool
    - lease_update_dns
    - send_alarm
    - reread_dhcp
    - lease_update_file
    - lease_update_from_configs
    - periodic_ra
    linkageType: ''
    returnType: void
    signature: void clear_cache_and_reload(time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1804,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1808,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1814,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1815
    functionName: set_tftp_listeners
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - option_bool
    - poll_listen
    linkageType: ''
    returnType: void
    signature: void set_tftp_listeners(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1826,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1830,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1834,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1844,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1851,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1854,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:1857,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1858
      start: 1818
    functionDepth: 1
    functionLinenumber: 1818
    functionLinenumberEnd: 1858
    functionName: set_dns_listeners
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - poll_listen
    - option_bool
    linkageType: ''
    returnType: void
    signature: void set_dns_listeners(void)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1872,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1875,1
    - Dst: cache_recv_insert
      Src: /src/dnsmasq/src/dnsmasq.c:1884,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1886,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1896,1
    - Dst: reply_query
      Src: /src/dnsmasq/src/dnsmasq.c:1898,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1904,1
    - Dst: reply_query
      Src: /src/dnsmasq/src/dnsmasq.c:1906,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1912,1
    - Dst: reply_query
      Src: /src/dnsmasq/src/dnsmasq.c:1914,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1919,1
    - Dst: receive_query
      Src: /src/dnsmasq/src/dnsmasq.c:1921,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:1936,1
    - Dst: do_tcp_connection
      Src: /src/dnsmasq/src/dnsmasq.c:1938,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 41
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1860
    functionDepth: 4
    functionLinenumber: 1860
    functionLinenumberEnd: 1941
    functionName: check_dns_listeners
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - reply_query
    - receive_query
    - poll_check
    - option_bool
    - close
    - do_tcp_connection
    - cache_recv_insert
    linkageType: ''
    returnType: void
    signature: void check_dns_listeners(time_t now)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/dnsmasq/src/dnsmasq.c:1959,1
    - Dst: getsockname
      Src: /src/dnsmasq/src/dnsmasq.c:1964,1
    - Dst: shutdown
      Src: /src/dnsmasq/src/dnsmasq.c:1967,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:1968,1
    - Dst: enumerate_interfaces
      Src: /src/dnsmasq/src/dnsmasq.c:1983,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:1985,1
    - Dst: tcp_interface
      Src: /src/dnsmasq/src/dnsmasq.c:1993,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dnsmasq.c:1994,1
    - Dst: loopback_exception
      Src: /src/dnsmasq/src/dnsmasq.c:2008,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2012,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/dnsmasq.c:2023,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2034,1
    - Dst: pipe
      Src: /src/dnsmasq/src/dnsmasq.c:2036,1
    - Dst: fork
      Src: /src/dnsmasq/src/dnsmasq.c:2039,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2042,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2043,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2050,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2067,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2077,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2083,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2104,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2108,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2109,1
    - Dst: alarm
      Src: /src/dnsmasq/src/dnsmasq.c:2111,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2112,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/dnsmasq.c:2119,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dnsmasq.c:2120,1
    - Dst: fcntl
      Src: /src/dnsmasq/src/dnsmasq.c:2120,1
    - Dst: tcp_request
      Src: /src/dnsmasq/src/dnsmasq.c:2122,1
    - Dst: free
      Src: /src/dnsmasq/src/dnsmasq.c:2125,1
    - Dst: shutdown
      Src: /src/dnsmasq/src/dnsmasq.c:2130,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2131,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2135,1
    - Dst: cache_update_hwm
      Src: /src/dnsmasq/src/dnsmasq.c:2138,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2141,1
    - Dst: flush_log
      Src: /src/dnsmasq/src/dnsmasq.c:2142,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:2143,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 94
    argCount: 3
    argNames:
    - listener
    - now
    - slot
    argTypes:
    - struct listener*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2145
      start: 1943
    functionDepth: 5
    functionLinenumber: 1943
    functionLinenumberEnd: 2145
    functionName: do_tcp_connection
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - close
    - retry_send
    - fcntl
    - accept
    - getsockname
    - cache_update_hwm
    - tcp_interface
    - alarm
    - pipe
    - option_bool
    - tcp_request
    - fork
    - _exit
    - enumerate_interfaces
    - sockaddr_isequal
    - free
    - loopback_exception
    - shutdown
    - flush_log
    - indextoname
    - read_write
    linkageType: ''
    returnType: void
    signature: void do_tcp_connection(struct listener *listener, time_t now, int slot)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2163,1
    - Dst: pipe
      Src: /src/dnsmasq/src/dnsmasq.c:2177,1
    - Dst: fork
      Src: /src/dnsmasq/src/dnsmasq.c:2180,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2182,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2186,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2204,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2225,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2226,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2228,1
    - Dst: tcp_from_udp
      Src: /src/dnsmasq/src/dnsmasq.c:2233,1
    - Dst: shutdown
      Src: /src/dnsmasq/src/dnsmasq.c:2239,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2240,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dnsmasq.c:2244,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2249,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2250,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2251,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2252,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2253,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2254,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2255,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2256,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2257,1
    - Dst: read_write
      Src: /src/dnsmasq/src/dnsmasq.c:2258,1
    - Dst: cache_update_hwm
      Src: /src/dnsmasq/src/dnsmasq.c:2260,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2262,1
    - Dst: flush_log
      Src: /src/dnsmasq/src/dnsmasq.c:2264,1
    - Dst: _exit
      Src: /src/dnsmasq/src/dnsmasq.c:2265,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 10
    argNames:
    - forward
    - now
    - status
    - header
    - plen
    - name
    - class
    - server
    - keycount
    - validatecount
    argTypes:
    - struct frec*
    - time_t
    - int
    - struct dns_header*
    - ssize_t*
    - char*
    - int
    - struct server*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2158
    functionDepth: 4
    functionLinenumber: 2158
    functionLinenumberEnd: 2270
    functionName: swap_to_tcp
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - pipe
    - shutdown
    - option_bool
    - fork
    - close
    - cache_update_hwm
    - flush_log
    - _exit
    - read_write
    - tcp_from_udp
    linkageType: ''
    returnType: int
    signature: "int swap_to_tcp(struct frec *forward, time_t now, int status, struct
      dns_header *header,\n\t\tssize_t *plen, char *name, int class, struct server
      *server, int *keycount, int *validatecount)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/src/dnsmasq.c:2280,1
    - Dst: fix_fd
      Src: /src/dnsmasq/src/dnsmasq.c:2282,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dnsmasq.c:2283,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2291
      start: 2275
    functionDepth: 1
    functionLinenumber: 2275
    functionLinenumberEnd: 2291
    functionName: make_icmp_sock
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 1
    functionsReached:
    - socket
    - fix_fd
    - close
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int make_icmp_sock(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rand16
      Src: /src/dnsmasq/src/dnsmasq.c:2303,1
    - Dst: make_icmp_sock
      Src: /src/dnsmasq/src/dnsmasq.c:2308,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dnsmasq.c:2313,1
    - Dst: memset
      Src: /src/dnsmasq/src/dnsmasq.c:2323,1
    - Dst: retry_send
      Src: /src/dnsmasq/src/dnsmasq.c:2332,1
    - Dst: sendto
      Src: /src/dnsmasq/src/dnsmasq.c:2332,1
    - Dst: delay_dhcp
      Src: /src/dnsmasq/src/dnsmasq.c:2335,1
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dnsmasq.c:2335,1
    - Dst: close
      Src: /src/dnsmasq/src/dnsmasq.c:2338,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dnsmasq.c:2341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2293
    functionDepth: 3
    functionLinenumber: 2293
    functionLinenumberEnd: 2345
    functionName: icmp_ping
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 3
    functionsReached:
    - memset
    - rand16
    - delay_dhcp
    - close
    - retry_send
    - make_icmp_sock
    - sendto
    - dnsmasq_time
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int icmp_ping(struct in_addr addr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dnsmasq.c:2369,1
    - Dst: difftime
      Src: /src/dnsmasq/src/dnsmasq.c:2370,1
    - Dst: poll_reset
      Src: /src/dnsmasq/src/dnsmasq.c:2372,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:2374,1
    - Dst: set_dns_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:2376,1
    - Dst: set_tftp_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:2378,1
    - Dst: set_log_writer
      Src: /src/dnsmasq/src/dnsmasq.c:2380,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/dnsmasq.c:2384,1
    - Dst: do_poll
      Src: /src/dnsmasq/src/dnsmasq.c:2387,1
    - Dst: dnsmasq_time
      Src: /src/dnsmasq/src/dnsmasq.c:2394,1
    - Dst: check_log_writer
      Src: /src/dnsmasq/src/dnsmasq.c:2396,1
    - Dst: check_dns_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:2398,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:2401,1
    - Dst: icmp6_packet
      Src: /src/dnsmasq/src/dnsmasq.c:2402,1
    - Dst: check_tftp_listeners
      Src: /src/dnsmasq/src/dnsmasq.c:2406,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/dnsmasq.c:2418,1
    - Dst: recvfrom
      Src: /src/dnsmasq/src/dnsmasq.c:2419,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 29
    argCount: 5
    argNames:
    - start
    - sec
    - fd
    - addr
    - id
    argTypes:
    - time_t
    - int
    - int
    - uint32_t
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2347
    functionDepth: 5
    functionLinenumber: 2347
    functionLinenumberEnd: 2429
    functionName: delay_dhcp
    functionSourceFile: /src/dnsmasq/src/dnsmasq.c
    functionUses: 2
    functionsReached:
    - icmp6_packet
    - poll_reset
    - recvfrom
    - poll_check
    - difftime
    - poll_listen
    - set_dns_listeners
    - set_tftp_listeners
    - check_dns_listeners
    - check_log_writer
    - check_tftp_listeners
    - set_log_writer
    - do_poll
    - dnsmasq_time
    linkageType: ''
    returnType: int
    signature: int delay_dhcp(time_t start, int sec, int fd, uint32_t addr, unsigned
      short id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - major
    - ','
    - minor
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: MIN_VERSION
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MIN_VERSION(major, minor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: null_hash_init
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void null_hash_init(void *ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/crypto.c:79,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/crypto.c:85,1
    - Dst: null_hash_buff::null_hash_buff
      Src: /src/dnsmasq/src/crypto.c:85,1
    - Dst: free
      Src: /src/dnsmasq/src/crypto.c:86,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/crypto.c:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ctxv
    - length
    - src
    argTypes:
    - void*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 95
    functionName: null_hash_update
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - whine_malloc::whine_malloc
    - null_hash_buff::null_hash_buff
    linkageType: ''
    returnType: void
    signature: void null_hash_update(void *ctxv, size_t length, const uint8_t *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - length
    - dst
    argTypes:
    - void*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: null_hash_digest
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void null_hash_digest(void *ctx, size_t length, uint8_t *dst)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/crypto.c:129,1
    - Dst: free
      Src: /src/dnsmasq/src/crypto.c:132,1
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/crypto.c:139,1
    - Dst: free
      Src: /src/dnsmasq/src/crypto.c:142,1
    - Dst: struct nettle_hash*::init
      Src: /src/dnsmasq/src/crypto.c:150,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - hash
    - ctxp
    - digestp
    argTypes:
    - struct nettle_hash*
    - void**
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 153
    functionName: hash_init
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 3
    functionsReached:
    - free
    - struct nettle_hash*::init
    - whine_malloc::whine_malloc
    linkageType: ''
    returnType: int
    signature: int hash_init(const struct nettle_hash *hash, void **ctxp, unsigned
      char **digestp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:168,1
    - Dst: nettle_rsa_public_key_init
      Src: /src/dnsmasq/src/crypto.c:171,1
    - Dst: mpz_init
      Src: /src/dnsmasq/src/crypto.c:172,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/crypto.c:175,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/crypto.c:181,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:189,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:190,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:192,1
    - Dst: nettle_rsa_sha1_verify_digest
      Src: /src/dnsmasq/src/crypto.c:197,1
    - Dst: nettle_rsa_sha256_verify_digest
      Src: /src/dnsmasq/src/crypto.c:199,1
    - Dst: nettle_rsa_sha512_verify_digest
      Src: /src/dnsmasq/src/crypto.c:201,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 205
    functionName: dnsmasq_rsa_verify
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - nettle_rsa_sha1_verify_digest
    - nettle_rsa_sha256_verify_digest
    - blockdata_retrieve
    - mpz_init
    - whine_malloc
    - nettle_rsa_public_key_init
    - GETSHORT
    - nettle_rsa_sha512_verify_digest
    - mpz_import
    linkageType: ''
    returnType: int
    signature: "int dnsmasq_rsa_verify(struct blockdata *key_data, unsigned int key_len,
      unsigned char *sig, size_t sig_len,\n\t\t\t      unsigned char *digest, size_t
      digest_len, int algo)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:218,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:225,1
    - Dst: nettle_dsa_signature_init
      Src: /src/dnsmasq/src/crypto.c:228,1
    - Dst: mpz_init
      Src: /src/dnsmasq/src/crypto.c:229,1
    - Dst: mpz_init
      Src: /src/dnsmasq/src/crypto.c:230,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:238,1
    - Dst: nettle_ecc_point_init
      Src: /src/dnsmasq/src/crypto.c:241,1
    - Dst: nettle_get_secp_256r1
      Src: /src/dnsmasq/src/crypto.c:241,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:251,1
    - Dst: nettle_ecc_point_init
      Src: /src/dnsmasq/src/crypto.c:254,1
    - Dst: nettle_get_secp_384r1
      Src: /src/dnsmasq/src/crypto.c:254,1
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/crypto.c:266,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:269,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:270,1
    - Dst: ecc_point_set
      Src: /src/dnsmasq/src/crypto.c:272,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:275,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:276,1
    - Dst: nettle_ecdsa_verify
      Src: /src/dnsmasq/src/crypto.c:278,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 279
    functionName: dnsmasq_ecdsa_verify
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - ecc_point_set
    - nettle_get_secp_256r1
    - nettle_ecdsa_verify
    - blockdata_retrieve
    - mpz_init
    - whine_malloc
    - MIN_VERSION
    - nettle_ecc_point_init
    - nettle_get_secp_384r1
    - nettle_dsa_signature_init
    - mpz_import
    linkageType: ''
    returnType: int
    signature: "int dnsmasq_ecdsa_verify(struct blockdata *key_data, unsigned int
      key_len, \n\t\t\t\tunsigned char *sig, size_t sig_len,\n\t\t\t\tunsigned char
      *digest, size_t digest_len, int algo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: nettle_get_secp_256r1
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nettle_get_secp_256r1()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 221
    functionName: nettle_get_secp_384r1
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: nettle_get_secp_384r1()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/crypto.c:294,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:299,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/crypto.c:300,1
    - Dst: nettle_dsa_signature_init
      Src: /src/dnsmasq/src/crypto.c:303,1
    - Dst: nettle_ecc_point_init
      Src: /src/dnsmasq/src/crypto.c:304,1
    - Dst: nettle_get_gost_gc256b
      Src: /src/dnsmasq/src/crypto.c:304,1
    - Dst: mpz_init
      Src: /src/dnsmasq/src/crypto.c:305,1
    - Dst: mpz_init
      Src: /src/dnsmasq/src/crypto.c:306,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:309,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:310,1
    - Dst: ecc_point_set
      Src: /src/dnsmasq/src/crypto.c:312,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:315,1
    - Dst: mpz_import
      Src: /src/dnsmasq/src/crypto.c:316,1
    - Dst: nettle_gostdsa_verify
      Src: /src/dnsmasq/src/crypto.c:318,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 319
    functionName: dnsmasq_gostdsa_verify
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - ecc_point_set
    - blockdata_retrieve
    - mpz_init
    - whine_malloc
    - nettle_ecc_point_init
    - nettle_get_gost_gc256b
    - nettle_dsa_signature_init
    - mpz_import
    - nettle_gostdsa_verify
    linkageType: ''
    returnType: int
    signature: "int dnsmasq_gostdsa_verify(struct blockdata *key_data, unsigned int
      key_len, \n\t\t\t\t  unsigned char *sig, size_t sig_len,\n\t\t\t\t  unsigned
      char *digest, size_t digest_len, int algo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_retrieve
      Src: /src/dnsmasq/src/crypto.c:330,1
    - Dst: ed25519_sha512_verify
      Src: /src/dnsmasq/src/crypto.c:344,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:349,1
    - Dst: ed448_shake256_verify
      Src: /src/dnsmasq/src/crypto.c:355,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 364
    functionName: dnsmasq_eddsa_verify
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - blockdata_retrieve
    - ed25519_sha512_verify
    - MIN_VERSION
    - ed448_shake256_verify
    linkageType: ''
    returnType: int
    signature: "int dnsmasq_eddsa_verify(struct blockdata *key_data, unsigned int
      key_len, \n\t\t\t\tunsigned char *sig, size_t sig_len,\n\t\t\t\tunsigned char
      *digest, size_t digest_len, int algo)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/dnsmasq/src/crypto.c:372,1
    - Dst: algo_digest_name
      Src: /src/dnsmasq/src/crypto.c:372,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:381,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:389,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 401
    functionName: "(*verify_func(int algo))(struct blockdata *key_data, unsigned int
      key_len, unsigned char *sig, size_t sig_len,\n\t\t\t     unsigned char *digest,
      size_t digest_len, int algo)"
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 0
    functionsReached:
    - MIN_VERSION
    - hash_find
    - algo_digest_name
    linkageType: ''
    returnType: int
    signature: "int (*verify_func(int algo))(struct blockdata *key_data, unsigned
      int key_len, unsigned char *sig, size_t sig_len,\n\t\t\t     unsigned char *digest,
      size_t digest_len, int algo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verify_func
      Src: /src/dnsmasq/src/crypto.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - key_data
    - key_len
    - sig
    - sig_len
    - digest
    - digest_len
    - algo
    argTypes:
    - struct blockdata*
    - unsigned int
    - unsigned char*
    - size_t
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 416
    functionName: verify
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 4
    functionsReached:
    - verify_func
    linkageType: ''
    returnType: int
    signature: "int verify(struct blockdata *key_data, unsigned int key_len, unsigned
      char *sig, size_t sig_len,\n\t   unsigned char *digest, size_t digest_len, int
      algo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - digest
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 436
    functionName: ds_digest_name
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 3
    functionsReached:
    - MIN_VERSION
    linkageType: ''
    returnType: char
    signature: char *ds_digest_name(int digest)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:451,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:456,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 1
    argNames:
    - algo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 464
    functionName: algo_digest_name
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 5
    functionsReached:
    - MIN_VERSION
    linkageType: ''
    returnType: char
    signature: char *algo_digest_name(int algo)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - digest
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 474
    functionName: nsec3_digest_name
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *nsec3_digest_name(int digest)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:482,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/crypto.c:484,1
    - Dst: MIN_VERSION
      Src: /src/dnsmasq/src/crypto.c:491,1
    - Dst: nettle_lookup_hash
      Src: /src/dnsmasq/src/crypto.c:492,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/crypto.c:498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 504
    functionName: hash_find
    functionSourceFile: /src/dnsmasq/src/crypto.c
    functionUses: 4
    functionsReached:
    - strcmp
    - MIN_VERSION
    - nettle_lookup_hash
    linkageType: ''
    returnType: struct nettle_hash
    signature: struct nettle_hash *hash_find(char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/blockdata.c:24,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 38
    functionName: add_blocks
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - whine_malloc
    linkageType: ''
    returnType: void
    signature: void add_blocks(int n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/blockdata.c:49,1
    - Dst: add_blocks
      Src: /src/dnsmasq/src/blockdata.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: blockdata_init
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 5
    functionsReached:
    - option_bool
    - add_blocks
    linkageType: ''
    returnType: void
    signature: void blockdata_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/blockdata.c:55,1
    - Dst: _
      Src: /src/dnsmasq/src/blockdata.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 3
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: blockdata_report
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void blockdata_report(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: add_blocks
      Src: /src/dnsmasq/src/blockdata.c:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 80
    functionName: new_block
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - add_blocks
    linkageType: ''
    returnType: struct blockdata
    signature: struct blockdata *new_block(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: new_block
      Src: /src/dnsmasq/src/blockdata.c:90,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/blockdata.c:93,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/blockdata.c:101,1
    - Dst: read_write
      Src: /src/dnsmasq/src/blockdata.c:104,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/blockdata.c:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - fd
    - data
    - len
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 118
    functionName: blockdata_alloc_real
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - new_block
    - memcpy
    - read_write
    - blockdata_free
    linkageType: ''
    returnType: struct blockdata
    signature: struct blockdata *blockdata_alloc_real(int fd, char *data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_alloc_real
      Src: /src/dnsmasq/src/blockdata.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 5
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: blockdata_alloc
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 9
    functionsReached:
    - blockdata_alloc_real
    linkageType: ''
    returnType: struct blockdata
    signature: struct blockdata *blockdata_alloc(char *data, size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/blockdata.c:138,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/blockdata.c:150,1
    - Dst: new_block::new_block
      Src: /src/dnsmasq/src/blockdata.c:161,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/blockdata.c:169,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - block
    - oldlen
    - data
    - newlen
    argTypes:
    - struct blockdata*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 175
    functionName: blockdata_expand
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 2
    functionsReached:
    - new_block::new_block
    - memcpy
    - blockdata_free
    linkageType: ''
    returnType: int
    signature: int blockdata_expand(struct blockdata *block, size_t oldlen, char *data,
      size_t newlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - blocks
    argTypes:
    - struct blockdata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 189
    functionName: blockdata_free
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void blockdata_free(struct blockdata *blocks)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/blockdata.c:205,1
    - Dst: free
      Src: /src/dnsmasq/src/blockdata.c:208,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/blockdata.c:217,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - block
    - len
    - data
    argTypes:
    - struct blockdata*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 223
    functionName: blockdata_retrieve
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 15
    functionsReached:
    - free
    - memcpy
    - whine_malloc::whine_malloc
    linkageType: ''
    returnType: void
    signature: void *blockdata_retrieve(struct blockdata *block, size_t len, void
      *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/blockdata.c:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - block
    - len
    - fd
    argTypes:
    - struct blockdata*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 234
    functionName: blockdata_write
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - read_write
    linkageType: ''
    returnType: void
    signature: void blockdata_write(struct blockdata *block, size_t len, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_alloc_real
      Src: /src/dnsmasq/src/blockdata.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - len
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 5
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: blockdata_read
    functionSourceFile: /src/dnsmasq/src/blockdata.c
    functionUses: 0
    functionsReached:
    - blockdata_alloc_real
    linkageType: ''
    returnType: struct blockdata
    signature: struct blockdata *blockdata_read(int fd, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 69
    functionName: fd_search
    functionSourceFile: /src/dnsmasq/src/poll.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: nfds_t
    signature: nfds_t fd_search(int fd)
  - 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: poll_reset
    functionSourceFile: /src/dnsmasq/src/poll.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void poll_reset(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: poll
      Src: /src/dnsmasq/src/poll.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: do_poll
    functionSourceFile: /src/dnsmasq/src/poll.c
    functionUses: 2
    functionsReached:
    - poll
    linkageType: ''
    returnType: int
    signature: int do_poll(int timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fd_search
      Src: /src/dnsmasq/src/poll.c:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - event
    argTypes:
    - int
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: poll_check
    functionSourceFile: /src/dnsmasq/src/poll.c
    functionUses: 6
    functionsReached:
    - fd_search
    linkageType: ''
    returnType: int
    signature: int poll_check(int fd, short event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fd_search
      Src: /src/dnsmasq/src/poll.c:93,1
    - Dst: whine_realloc::whine_realloc
      Src: /src/dnsmasq/src/poll.c:106,1
    - Dst: memmove
      Src: /src/dnsmasq/src/poll.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - fd
    - event
    argTypes:
    - int
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 118
    functionName: poll_listen
    functionSourceFile: /src/dnsmasq/src/poll.c
    functionUses: 6
    functionsReached:
    - memmove
    - whine_realloc::whine_realloc
    - fd_search
    linkageType: ''
    returnType: void
    signature: void poll_listen(int fd, short event)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp-common.c:25,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp-common.c:26,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp-common.c:27,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/dhcp-common.c:32,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/dhcp-common.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 21
    functionDepth: 2
    functionLinenumber: 21
    functionLinenumberEnd: 37
    functionName: dhcp_common_init
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - safe_malloc
    - expand_buf
    linkageType: ''
    returnType: void
    signature: void dhcp_common_init(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: recvmsg
      Src: /src/dnsmasq/src/dhcp-common.c:46,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/dhcp-common.c:58,1
    - Dst: expand_buf
      Src: /src/dnsmasq/src/dhcp-common.c:63,1
    - Dst: recvmsg
      Src: /src/dnsmasq/src/dhcp-common.c:68,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 2
    argNames:
    - fd
    - msg
    argTypes:
    - int
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 80
    functionName: recv_dhcp_packet
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 3
    functionsReached:
    - expand_buf
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t recv_dhcp_packet(int fd, struct msghdr *msg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:90,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/dhcp-common.c:97,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:98,1
    - Dst: strncmp
      Src: /src/dnsmasq/src/dhcp-common.c:105,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:106,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 2
    argNames:
    - check
    - pool
    argTypes:
    - struct dhcp_netid*
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 110
    functionName: match_netid_wild
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strlen
    - strncmp
    linkageType: ''
    returnType: int
    signature: int match_netid_wild(struct dhcp_netid *check, struct dhcp_netid *pool)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match_netid_wild
      Src: /src/dnsmasq/src/dhcp-common.c:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - tags
    argTypes:
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 129
    functionName: run_tag_if
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 3
    functionsReached:
    - match_netid_wild
    linkageType: ''
    returnType: struct dhcp_netid
    signature: struct dhcp_netid *run_tag_if(struct dhcp_netid *tags)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - opt
    - pxemode
    argTypes:
    - struct dhcp_opt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 148
    functionName: pxe_ok
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pxe_ok(struct dhcp_opt *opt, int pxemode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/dhcp-common.c:152,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:161,1
    - Dst: pxe_ok
      Src: /src/dnsmasq/src/dhcp-common.c:162,1
    - Dst: run_tag_if
      Src: /src/dnsmasq/src/dhcp-common.c:174,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:180,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:185,1
    - Dst: pxe_ok
      Src: /src/dnsmasq/src/dhcp-common.c:186,1
    - Dst: pxe_ok
      Src: /src/dnsmasq/src/dhcp-common.c:201,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:209,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:209,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 39
    argCount: 4
    argNames:
    - tags
    - context_tags
    - opts
    - pxemode
    argTypes:
    - struct dhcp_netid*
    - struct dhcp_netid*
    - struct dhcp_opt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 220
    functionName: option_filter
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 4
    functionsReached:
    - run_tag_if
    - pxe_ok
    - my_syslog
    - _
    - match_netid
    linkageType: ''
    returnType: struct dhcp_netid
    signature: struct dhcp_netid *option_filter(struct dhcp_netid *tags, struct dhcp_netid
      *context_tags, struct dhcp_opt *opts, int pxemode)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:237,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:244,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 3
    argNames:
    - check
    - pool
    - tagnotneeded
    argTypes:
    - struct dhcp_netid*
    - struct dhcp_netid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 248
    functionName: match_netid
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 19
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int match_netid(struct dhcp_netid *check, struct dhcp_netid *pool,
      int tagnotneeded)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dnsmasq/src/dhcp-common.c:253,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - hostname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 263
    functionName: strip_hostname
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 4
    functionsReached:
    - strlen
    - strchr
    linkageType: ''
    returnType: char
    signature: char *strip_hostname(char *hostname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp-common.c:267,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:276,1
    - Dst: strncat
      Src: /src/dnsmasq/src/dhcp-common.c:281,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:281,1
    - Dst: strncat
      Src: /src/dnsmasq/src/dhcp-common.c:283,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:283,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:286,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:286,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - netid
    - xid
    argTypes:
    - struct dhcp_netid*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 288
    functionName: log_tags
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 2
    functionsReached:
    - option_bool
    - my_syslog
    - _
    - strncat
    - strcmp
    - strlen
    linkageType: ''
    returnType: void
    signature: void log_tags(struct dhcp_netid *netid, u32 xid)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcmp_masked
      Src: /src/dnsmasq/src/dhcp-common.c:302,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dhcp-common.c:308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - o
    - p
    - len
    argTypes:
    - struct dhcp_opt*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 318
    functionName: match_bytes
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 2
    functionsReached:
    - memcmp
    - memcmp_masked
    linkageType: ''
    returnType: int
    signature: int match_bytes(struct dhcp_opt *o, unsigned char *p, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/dhcp-common.c:328,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 4
    argNames:
    - config
    - hwaddr
    - len
    - type
    argTypes:
    - struct dhcp_config*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 332
    functionName: config_has_mac
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int config_has_mac(struct dhcp_config *config, unsigned char *hwaddr,
      int len, int type)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/dhcp-common.c:354,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/dhcp-common.c:362,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 2
    argNames:
    - context
    - config
    argTypes:
    - struct dhcp_context*
    - struct dhcp_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 367
    functionName: is_config_in_context
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 0
    functionsReached:
    - is_same_net6
    - is_same_net
    linkageType: ''
    returnType: int
    signature: int is_config_in_context(struct dhcp_context *context, struct dhcp_config
      *config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/dnsmasq/src/dhcp-common.c:385,1
    - Dst: is_config_in_context
      Src: /src/dnsmasq/src/dhcp-common.c:386,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:387,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/dhcp-common.c:395,1
    - Dst: is_config_in_context
      Src: /src/dnsmasq/src/dhcp-common.c:396,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:397,1
    - Dst: config_has_mac
      Src: /src/dnsmasq/src/dhcp-common.c:404,1
    - Dst: is_config_in_context
      Src: /src/dnsmasq/src/dhcp-common.c:405,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:406,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/dhcp-common.c:412,1
    - Dst: is_config_in_context
      Src: /src/dnsmasq/src/dhcp-common.c:413,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:414,1
    - Dst: is_config_in_context
      Src: /src/dnsmasq/src/dhcp-common.c:423,1
    - Dst: match_netid
      Src: /src/dnsmasq/src/dhcp-common.c:424,1
    - Dst: memcmp_masked::memcmp_masked
      Src: /src/dnsmasq/src/dhcp-common.c:429,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 27
    argCount: 10
    argNames:
    - configs
    - context
    - clid
    - clid_len
    - hwaddr
    - hw_len
    - hw_type
    - hostname
    - tags
    - tag_not_needed
    argTypes:
    - struct dhcp_config*
    - struct dhcp_context*
    - unsigned char*
    - int
    - unsigned char*
    - int
    - int
    - char*
    - struct dhcp_netid*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 369
    functionDepth: 2
    functionLinenumber: 369
    functionLinenumberEnd: 436
    functionName: find_config_match
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 0
    functionsReached:
    - memcmp_masked::memcmp_masked
    - hostname_isequal
    - match_netid
    - memcmp
    - is_config_in_context
    - config_has_mac
    linkageType: ''
    returnType: struct dhcp_config
    signature: "struct dhcp_config *find_config_match(struct dhcp_config *configs,\n\t\t\t\t\t
      \    struct dhcp_context *context,\n\t\t\t\t\t     unsigned char *clid, int
      clid_len,\n\t\t\t\t\t     unsigned char *hwaddr, int hw_len, \n\t\t\t\t\t     int
      hw_type, char *hostname,\n\t\t\t\t\t     struct dhcp_netid *tags, int tag_not_needed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_config_match
      Src: /src/dnsmasq/src/dhcp-common.c:445,1
    - Dst: find_config_match
      Src: /src/dnsmasq/src/dhcp-common.c:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 9
    argNames:
    - configs
    - context
    - clid
    - clid_len
    - hwaddr
    - hw_len
    - hw_type
    - hostname
    - tags
    argTypes:
    - struct dhcp_config*
    - struct dhcp_context*
    - unsigned char*
    - int
    - unsigned char*
    - int
    - int
    - char*
    - struct dhcp_netid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: find_config
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 3
    functionsReached:
    - find_config_match
    linkageType: ''
    returnType: struct dhcp_config
    signature: "struct dhcp_config *find_config(struct dhcp_config *configs,\n\t\t\t\tstruct
      dhcp_context *context,\n\t\t\t\tunsigned char *clid, int clid_len,\n\t\t\t\tunsigned
      char *hwaddr, int hw_len, \n\t\t\t\tint hw_type, char *hostname, struct dhcp_netid
      *tags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dnsmasq/src/dhcp-common.c:578,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/dhcp-common.c:586,1
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/dhcp-common.c:592,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:592,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dhcp-common.c:593,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 558
    functionDepth: 2
    functionLinenumber: 558
    functionLinenumberEnd: 598
    functionName: whichdevice
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - strcpy
    - safe_malloc
    - strchr
    - strcmp
    - strlen
    linkageType: ''
    returnType: char
    signature: char *whichdevice(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:602,1
    - Dst: setsockopt
      Src: /src/dnsmasq/src/dhcp-common.c:606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - device
    - fd
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 611
    functionName: bindtodevice
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 0
    functionsReached:
    - strlen
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int bindtodevice(char *device, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: bindtodevice
      Src: /src/dnsmasq/src/dhcp-common.c:622,1
    - Dst: bindtodevice
      Src: /src/dnsmasq/src/dhcp-common.c:625,1
    - Dst: bindtodevice
      Src: /src/dnsmasq/src/dhcp-common.c:630,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 1
    argNames:
    - bound_device
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 635
    functionName: bind_dhcp_devices
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - bindtodevice
    linkageType: ''
    returnType: int
    signature: int bind_dhcp_devices(char *bound_device)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dnsmasq/src/dhcp-common.c:764,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:764,1
    - Dst: printf
      Src: /src/dnsmasq/src/dhcp-common.c:768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 769
    functionName: display_opts
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void display_opts(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/dnsmasq/src/dhcp-common.c:775,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:775,1
    - Dst: printf
      Src: /src/dnsmasq/src/dhcp-common.c:779,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 780
    functionName: display_opts6
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - printf
    - _
    linkageType: ''
    returnType: void
    signature: void display_opts6(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/dhcp-common.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - prot
    - name
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 802
    functionName: lookup_dhcp_opt
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int lookup_dhcp_opt(int prot, char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - prot
    - val
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 823
    functionName: lookup_dhcp_len
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lookup_dhcp_len(int prot, int val)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/src/dhcp-common.c:840,1
    - Dst: strncat
      Src: /src/dnsmasq/src/dhcp-common.c:854,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:854,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/dhcp-common.c:856,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:857,1
    - Dst: strncat
      Src: /src/dnsmasq/src/dhcp-common.c:858,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:858,1
    - Dst: isprint
      Src: /src/dnsmasq/src/dhcp-common.c:865,1
    - Dst: isprint
      Src: /src/dnsmasq/src/dhcp-common.c:879,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/dhcp-common.c:896,1
    - Dst: isprint
      Src: /src/dnsmasq/src/dhcp-common.c:900,1
    - Dst: prettyprint_time
      Src: /src/dnsmasq/src/dhcp-common.c:920,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:922,1
    - Dst: print_mac
      Src: /src/dnsmasq/src/dhcp-common.c:938,1
    - Dst: strncat
      Src: /src/dnsmasq/src/dhcp-common.c:940,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:940,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 68
    argCount: 6
    argNames:
    - prot
    - opt
    - val
    - opt_len
    - buf
    - buf_len
    argTypes:
    - int
    - unsigned int
    - unsigned char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 947
    functionName: option_string
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 4
    functionsReached:
    - memset
    - isprint
    - sprintf
    - memcpy
    - prettyprint_time
    - GETSHORT
    - print_mac
    - strncat
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *option_string(int prot, unsigned int opt, unsigned char *val,
      int opt_len, char *buf, int buf_len)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: setaddr6part
      Src: /src/dnsmasq/src/dhcp-common.c:964,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:965,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dhcp-common.c:972,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:972,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:975,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:975,1
    - Dst: prettyprint_time
      Src: /src/dnsmasq/src/dhcp-common.c:976,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:977,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:986,1
    - Dst: indextoname
      Src: /src/dnsmasq/src/dhcp-common.c:988,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:989,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:994,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:996,1
    - Dst: strncpy
      Src: /src/dnsmasq/src/dhcp-common.c:1007,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dhcp-common.c:1009,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:1013,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:1014,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1015,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1017,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1019,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1021,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1022,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/dhcp-common.c:1030,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1035,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1035,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/dhcp-common.c:1037,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1038,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1038,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 43
    argCount: 2
    argNames:
    - family
    - context
    argTypes:
    - int
    - struct dhcp_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 949
    functionDepth: 3
    functionLinenumber: 949
    functionLinenumberEnd: 1041
    functionName: log_context
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 3
    functionsReached:
    - strcpy
    - setaddr6part
    - option_bool
    - sprintf
    - prettyprint_time
    - my_syslog
    - _
    - indextoname
    - strncpy
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void log_context(int family, struct dhcp_context *context)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:1046,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/dhcp-common.c:1047,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:1050,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:1050,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/dhcp-common.c:1055,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/dhcp-common.c:1059,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/dhcp-common.c:1061,1
    - Dst: strlen
      Src: /src/dnsmasq/src/dhcp-common.c:1061,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1069,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1069,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1071,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1071,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/dhcp-common.c:1074,1
    - Dst: _
      Src: /src/dnsmasq/src/dhcp-common.c:1074,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - family
    - relay
    argTypes:
    - int
    - struct dhcp_relay*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1043
    functionDepth: 3
    functionLinenumber: 1043
    functionLinenumberEnd: 1075
    functionName: log_relay
    functionSourceFile: /src/dnsmasq/src/dhcp-common.c
    functionUses: 1
    functionsReached:
    - inet_pton
    - sprintf
    - my_syslog
    - IN6_ARE_ADDR_EQUAL
    - _
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void log_relay(int family, struct dhcp_relay *relay)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/dnsmasq/src/auth.c:31,1
    - Dst: is_same_net
      Src: /src/dnsmasq/src/auth.c:33,1
    - Dst: is_same_net6
      Src: /src/dnsmasq/src/auth.c:36,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - list
    - flag
    - addr_u
    argTypes:
    - struct addrlist*
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 42
    functionName: find_addrlist
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 0
    functionsReached:
    - is_same_net
    - is_same_net6
    - htonl
    linkageType: ''
    returnType: struct addrlist
    signature: struct addrlist *find_addrlist(struct addrlist *list, int flag, union
      all_addr *addr_u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_addrlist
      Src: /src/dnsmasq/src/auth.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - zone
    - flag
    - addr_u
    argTypes:
    - struct auth_zone*
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: find_subnet
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 0
    functionsReached:
    - find_addrlist
    linkageType: ''
    returnType: struct addrlist
    signature: struct addrlist *find_subnet(struct auth_zone *zone, int flag, union
      all_addr *addr_u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_addrlist
      Src: /src/dnsmasq/src/auth.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - zone
    - flag
    - addr_u
    argTypes:
    - struct auth_zone*
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 58
    functionName: find_exclude
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 0
    functionsReached:
    - find_addrlist
    linkageType: ''
    returnType: struct addrlist
    signature: struct addrlist *find_exclude(struct auth_zone *zone, int flag, union
      all_addr *addr_u)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_exclude
      Src: /src/dnsmasq/src/auth.c:62,1
    - Dst: find_subnet
      Src: /src/dnsmasq/src/auth.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - zone
    - flag
    - addr_u
    argTypes:
    - struct auth_zone*
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: filter_zone
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 0
    functionsReached:
    - find_subnet
    - find_exclude
    linkageType: ''
    returnType: int
    signature: int filter_zone(struct auth_zone *zone, int flag, union all_addr *addr_u)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:74,1
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:75,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/auth.c:81,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - zone
    - name
    - cut
    argTypes:
    - struct auth_zone*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 96
    functionName: in_zone
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 2
    functionsReached:
    - strlen
    - hostname_isequal
    linkageType: ''
    returnType: int
    signature: int in_zone(struct auth_zone *zone, char *name, char **cut)
  - BBCount: 144
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/dnsmasq/src/auth.c:121,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/auth.c:125,1
    - Dst: OPCODE
      Src: /src/dnsmasq/src/auth.c:130,1
    - Dst: extract_name
      Src: /src/dnsmasq/src/auth.c:142,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/auth.c:145,1
    - Dst: GETSHORT
      Src: /src/dnsmasq/src/auth.c:146,1
    - Dst: in_arpa_name_2_addr
      Src: /src/dnsmasq/src/auth.c:156,1
    - Dst: find_subnet
      Src: /src/dnsmasq/src/auth.c:160,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/auth.c:191,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/auth.c:200,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/auth.c:206,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:212,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:215,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:216,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/auth.c:223,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/auth.c:225,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/auth.c:225,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/auth.c:227,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:229,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:236,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:237,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:239,1
    - Dst: record_source
      Src: /src/dnsmasq/src/auth.c:239,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:241,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:246,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:248,1
    - Dst: record_source
      Src: /src/dnsmasq/src/auth.c:248,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:250,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/auth.c:258,1
    - Dst: is_rev_synth
      Src: /src/dnsmasq/src/auth.c:260,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:260,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:262,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:265,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:274,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:286,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:298,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:305,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:306,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:313,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:320,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:321,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:348,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:354,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:355,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:362,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:368,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:369,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:376,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:382,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:383,1
    - Dst: hostname_issubdomain
      Src: /src/dnsmasq/src/auth.c:397,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:406,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:412,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:413,1
    - Dst: is_name_synthetic
      Src: /src/dnsmasq/src/auth.c:420,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:424,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:425,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:437,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/auth.c:452,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/auth.c:460,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/auth.c:462,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/auth.c:464,1
    - Dst: _
      Src: /src/dnsmasq/src/auth.c:464,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:473,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:479,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/auth.c:483,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:487,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/auth.c:487,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:494,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:497,1
    - Dst: record_source
      Src: /src/dnsmasq/src/auth.c:497,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:499,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/auth.c:504,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/auth.c:510,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/auth.c:512,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:516,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:518,1
    - Dst: record_source
      Src: /src/dnsmasq/src/auth.c:518,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:519,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/auth.c:524,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:541,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/auth.c:543,1
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:545,1
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:547,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/auth.c:556,1
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:556,1
    - Dst: strlen
      Src: /src/dnsmasq/src/auth.c:559,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:565,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/auth.c:566,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:567,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:569,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:570,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:573,1
    - Dst: cache_find_non_terminal
      Src: /src/dnsmasq/src/auth.c:580,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:583,1
    - Dst: ntohl
      Src: /src/dnsmasq/src/auth.c:606,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/auth.c:610,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/auth.c:613,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/auth.c:615,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/auth.c:626,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/auth.c:628,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:636,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:658,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:672,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:685,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:692,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:700,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:711,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:716,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:726,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:731,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:741,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:746,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:757,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:766,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:767,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:773,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:774,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:784,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/auth.c:786,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:787,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:789,1
    - Dst: strcat
      Src: /src/dnsmasq/src/auth.c:790,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:796,1
    - Dst: cache_enumerate
      Src: /src/dnsmasq/src/auth.c:802,1
    - Dst: cache_enumerate
      Src: /src/dnsmasq/src/auth.c:803,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/auth.c:809,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/auth.c:811,1
    - Dst: strchr
      Src: /src/dnsmasq/src/auth.c:812,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:813,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:814,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/auth.c:820,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/auth.c:822,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/auth.c:822,1
    - Dst: in_zone
      Src: /src/dnsmasq/src/auth.c:823,1
    - Dst: filter_zone
      Src: /src/dnsmasq/src/auth.c:824,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:829,1
    - Dst: add_resource_record
      Src: /src/dnsmasq/src/auth.c:839,1
    - Dst: skip_questions
      Src: /src/dnsmasq/src/auth.c:877,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:880,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/auth.c:884,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/auth.c:886,1
    - Dst: htons
      Src: /src/dnsmasq/src/auth.c:888,1
    - Dst: htons
      Src: /src/dnsmasq/src/auth.c:889,1
    - Dst: htons
      Src: /src/dnsmasq/src/auth.c:890,1
    - Dst: SET_RCODE
      Src: /src/dnsmasq/src/auth.c:905,1
    - Dst: htons
      Src: /src/dnsmasq/src/auth.c:906,1
    - Dst: htons
      Src: /src/dnsmasq/src/auth.c:907,1
    - Dst: log_query
      Src: /src/dnsmasq/src/auth.c:908,1
    - Dst: resize_packet
      Src: /src/dnsmasq/src/auth.c:909,1
    CyclomaticComplexity: 257
    EdgeCount: 257
    ICount: 469
    argCount: 6
    argNames:
    - header
    - limit
    - qlen
    - now
    - peer_addr
    - local_query
    argTypes:
    - struct dns_header*
    - char*
    - size_t
    - time_t
    - union mysockaddr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 99
    functionDepth: 4
    functionLinenumber: 99
    functionLinenumberEnd: 913
    functionName: answer_auth
    functionSourceFile: /src/dnsmasq/src/auth.c
    functionUses: 4
    functionsReached:
    - cache_get_name
    - add_resource_record
    - ntohs
    - hostname_isequal
    - cache_find_by_name
    - cache_enumerate
    - OPCODE
    - record_source
    - hostname_issubdomain
    - is_rev_synth
    - strlen
    - cache_find_by_addr
    - find_subnet
    - is_name_synthetic
    - strcat
    - skip_questions
    - filter_zone
    - sprintf
    - in_arpa_name_2_addr
    - htons
    - strcmp
    - in_zone
    - extract_name
    - log_query
    - option_bool
    - my_syslog
    - GETSHORT
    - _
    - sockaddr_isequal
    - inet_ntop
    - strcpy
    - SET_RCODE
    - IN6_ARE_ADDR_EQUAL
    - resize_packet
    - strchr
    - cache_find_non_terminal
    - ntohl
    linkageType: ''
    returnType: size_t
    signature: "size_t answer_auth(struct dns_header *header, char *limit, size_t
      qlen, time_t now,\n\t\t   union mysockaddr *peer_addr, int local_query)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: UNUSED
    functionSourceFile: /src/dnsmasq/src/tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSED(x)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/dnsmasq/src/tables.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: pfr_strerror
    functionSourceFile: /src/dnsmasq/src/tables.c
    functionUses: 0
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: char *pfr_strerror(int errnum)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/dnsmasq/src/tables.c:57,1
    - Dst: err
      Src: /src/dnsmasq/src/tables.c:60,1
    - Dst: die
      Src: /src/dnsmasq/src/tables.c:61,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: ipset_init
    functionSourceFile: /src/dnsmasq/src/tables.c
    functionUses: 1
    functionsReached:
    - open
    - err
    - die
    - _
    linkageType: ''
    returnType: void
    signature: void ipset_init(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:74,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:74,1
    - Dst: bzero
      Src: /src/dnsmasq/src/tables.c:78,1
    - Dst: strlen
      Src: /src/dnsmasq/src/tables.c:80,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:82,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:82,1
    - Dst: strlcpy
      Src: /src/dnsmasq/src/tables.c:87,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:90,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:90,1
    - Dst: bzero
      Src: /src/dnsmasq/src/tables.c:94,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/tables.c:99,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:101,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:101,1
    - Dst: pfr_strerror
      Src: /src/dnsmasq/src/tables.c:101,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:108,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:108,1
    - Dst: bzero
      Src: /src/dnsmasq/src/tables.c:110,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/tables.c:116,1
    - Dst: bzero
      Src: /src/dnsmasq/src/tables.c:125,1
    - Dst: ioctl
      Src: /src/dnsmasq/src/tables.c:131,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:133,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:133,1
    - Dst: pfr_strerror
      Src: /src/dnsmasq/src/tables.c:133,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/tables.c:137,1
    - Dst: _
      Src: /src/dnsmasq/src/tables.c:137,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 4
    argNames:
    - setname
    - ipaddr
    - flags
    - remove
    argTypes:
    - char*
    - union all_addr*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 141
    functionName: add_to_ipset
    functionSourceFile: /src/dnsmasq/src/tables.c
    functionUses: 2
    functionsReached:
    - pfr_strerror
    - ioctl
    - bzero
    - my_syslog
    - memcpy
    - _
    - strlcpy
    - strlen
    linkageType: ''
    returnType: int
    signature: "int add_to_ipset(const char *setname, const union all_addr *ipaddr,\n\t\t
      int flags, int remove)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ubus.c:79,1
    - Dst: _
      Src: /src/dnsmasq/src/ubus.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ctx
    - obj
    argTypes:
    - struct ubus_context*
    - struct ubus_object*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: ubus_subscribe_cb
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void ubus_subscribe_cb(struct ubus_context *ctx, struct ubus_object
      *obj)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ubus_free
      Src: /src/dnsmasq/src/ubus.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ubus
    argTypes:
    - struct ubus_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: ubus_destroy
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - ubus_free
    linkageType: ''
    returnType: void
    signature: void ubus_destroy(struct ubus_context *ubus)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ubus_reconnect
      Src: /src/dnsmasq/src/ubus.c:96,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ubus.c:99,1
    - Dst: _
      Src: /src/dnsmasq/src/ubus.c:99,1
    - Dst: ubus_strerror
      Src: /src/dnsmasq/src/ubus.c:99,1
    - Dst: ubus_destroy
      Src: /src/dnsmasq/src/ubus.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ubus
    argTypes:
    - struct ubus_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: ubus_disconnect_cb
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - ubus_destroy
    - my_syslog
    - ubus_reconnect
    - _
    - ubus_strerror
    linkageType: ''
    returnType: void
    signature: void ubus_disconnect_cb(struct ubus_context *ubus)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ubus_connect
      Src: /src/dnsmasq/src/ubus.c:110,1
    - Dst: ubus_add_object
      Src: /src/dnsmasq/src/ubus.c:114,1
    - Dst: ubus_destroy
      Src: /src/dnsmasq/src/ubus.c:117,1
    - Dst: ubus_strerror
      Src: /src/dnsmasq/src/ubus.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 126
    functionName: ubus_init
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - ubus_add_object
    - ubus_strerror
    - ubus_connect
    - ubus_destroy
    linkageType: ''
    returnType: char
    signature: char *ubus_init()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ubus.c:135,1
    - Dst: _
      Src: /src/dnsmasq/src/ubus.c:135,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/ubus.c:143,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/ubus.c:144,1
    - Dst: poll_listen
      Src: /src/dnsmasq/src/ubus.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 146
    functionName: set_ubus_listeners
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - poll_listen
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void set_ubus_listeners()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ubus.c:155,1
    - Dst: _
      Src: /src/dnsmasq/src/ubus.c:155,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/ubus.c:163,1
    - Dst: ubus_handle_event
      Src: /src/dnsmasq/src/ubus.c:164,1
    - Dst: poll_check
      Src: /src/dnsmasq/src/ubus.c:166,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/ubus.c:168,1
    - Dst: _
      Src: /src/dnsmasq/src/ubus.c:168,1
    - Dst: ubus_destroy
      Src: /src/dnsmasq/src/ubus.c:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 172
    functionName: check_ubus_listeners
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - poll_check
    - ubus_handle_event
    - ubus_destroy
    - my_syslog
    - _
    linkageType: ''
    returnType: void
    signature: void check_ubus_listeners()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - stmt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 183
    functionName: CHECK
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK(stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:194,1
    - Dst: blob_buf_init
      Src: /src/dnsmasq/src/ubus.c:194,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:197,1
    - Dst: blobmsg_add_u32
      Src: /src/dnsmasq/src/ubus.c:197,1
    - Dst: get_metric_name
      Src: /src/dnsmasq/src/ubus.c:197,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:199,1
    - Dst: ubus_send_reply
      Src: /src/dnsmasq/src/ubus.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - ctx
    - obj
    - req
    - method
    - msg
    argTypes:
    - struct ubus_context*
    - struct ubus_object*
    - struct ubus_request_data*
    - char*
    - struct blob_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 201
    functionName: ubus_handle_metrics
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - get_metric_name
    - CHECK
    - ubus_send_reply
    - blob_buf_init
    - blobmsg_add_u32
    linkageType: ''
    returnType: int
    signature: "int ubus_handle_metrics(struct ubus_context *ctx, struct ubus_object
      *obj,\n\t\t\t       struct ubus_request_data *req, const char *method,\n\t\t\t
      \      struct blob_attr *msg)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: countof
      Src: /src/dnsmasq/src/ubus.c:209,1
    - Dst: blobmsg_parse
      Src: /src/dnsmasq/src/ubus.c:222,1
    - Dst: blob_data
      Src: /src/dnsmasq/src/ubus.c:222,1
    - Dst: blob_len
      Src: /src/dnsmasq/src/ubus.c:222,1
    - Dst: blobmsg_get_u32
      Src: /src/dnsmasq/src/ubus.c:227,1
    - Dst: blobmsg_get_u32
      Src: /src/dnsmasq/src/ubus.c:233,1
    - Dst: blobmsg_data
      Src: /src/dnsmasq/src/ubus.c:240,1
    - Dst: blobmsg_data_len
      Src: /src/dnsmasq/src/ubus.c:241,1
    - Dst: blob_id
      Src: /src/dnsmasq/src/ubus.c:245,1
    - Dst: blobmsg_get_string
      Src: /src/dnsmasq/src/ubus.c:247,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/ubus.c:249,1
    - Dst: is_valid_dns_name_pattern
      Src: /src/dnsmasq/src/ubus.c:249,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:261,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:264,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:266,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/ubus.c:274,1
    - Dst: blobmsg_data
      Src: /src/dnsmasq/src/ubus.c:280,1
    - Dst: blobmsg_data_len
      Src: /src/dnsmasq/src/ubus.c:281,1
    - Dst: blobmsg_get_string
      Src: /src/dnsmasq/src/ubus.c:285,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/ubus.c:287,1
    - Dst: strlen
      Src: /src/dnsmasq/src/ubus.c:287,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/ubus.c:289,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/ubus.c:293,1
    - Dst: memset
      Src: /src/dnsmasq/src/ubus.c:296,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:309,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:312,1
    - Dst: free
      Src: /src/dnsmasq/src/ubus.c:317,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 82
    argCount: 5
    argNames:
    - ctx
    - obj
    - req
    - method
    - msg
    argTypes:
    - struct ubus_context*
    - struct ubus_object*
    - struct ubus_request_data*
    - char*
    - struct blob_attr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 321
    functionName: ubus_handle_set_connmark_allowlist
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - blob_id
    - strcpy
    - memset
    - countof
    - blobmsg_data_len
    - free
    - whine_malloc
    - blobmsg_get_u32
    - blobmsg_data
    - is_valid_dns_name_pattern
    - blob_len
    - strcmp
    - strlen
    - blobmsg_parse
    - blob_data
    - blobmsg_get_string
    linkageType: ''
    returnType: int
    signature: "int ubus_handle_set_connmark_allowlist(struct ubus_context *ctx, struct
      ubus_object *obj,\n\t\t\t\t\t      struct ubus_request_data *req, const char
      *method,\n\t\t\t\t\t      struct blob_attr *msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: blob_id
      Src: /src/dnsmasq/src/ubus.c:245,1
    - Dst: blobmsg_get_string
      Src: /src/dnsmasq/src/ubus.c:247,1
    - Dst: strcmp
      Src: /src/dnsmasq/src/ubus.c:249,1
    - Dst: is_valid_dns_name_pattern
      Src: /src/dnsmasq/src/ubus.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: __blob_for_each_attr
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - is_valid_dns_name_pattern
    - blob_id
    - strcmp
    - blobmsg_get_string
    linkageType: ''
    returnType: void
    signature: void __blob_for_each_attr(attr, head, len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blobmsg_get_string
      Src: /src/dnsmasq/src/ubus.c:285,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/ubus.c:287,1
    - Dst: strlen
      Src: /src/dnsmasq/src/ubus.c:287,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/ubus.c:289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 290
    functionName: __blob_for_each_attr
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 0
    functionsReached:
    - strcpy
    - strlen
    - whine_malloc
    - blobmsg_get_string
    linkageType: ''
    returnType: void
    signature: void __blob_for_each_attr(attr, head, len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - stmt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: CHECK
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK(stmt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:343,1
    - Dst: blob_buf_init
      Src: /src/dnsmasq/src/ubus.c:343,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:345,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:345,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:347,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:347,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:349,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:349,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:351,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:351,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:353,1
    - Dst: ubus_notify
      Src: /src/dnsmasq/src/ubus.c:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 5
    argNames:
    - type
    - mac
    - ip
    - name
    - interface
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 354
    functionName: ubus_event_bcast
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - blobmsg_add_string
    - blob_buf_init
    - CHECK
    - ubus_notify
    linkageType: ''
    returnType: void
    signature: void ubus_event_bcast(const char *type, const char *mac, const char
      *ip, const char *name, const char *interface)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:364,1
    - Dst: blob_buf_init
      Src: /src/dnsmasq/src/ubus.c:364,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:365,1
    - Dst: blobmsg_add_u32
      Src: /src/dnsmasq/src/ubus.c:365,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:366,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:366,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:368,1
    - Dst: ubus_notify
      Src: /src/dnsmasq/src/ubus.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - mark
    - name
    argTypes:
    - u32
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: ubus_event_bcast_connmark_allowlist_refused
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - CHECK
    - ubus_notify
    - blobmsg_add_string
    - blob_buf_init
    - blobmsg_add_u32
    linkageType: ''
    returnType: void
    signature: void ubus_event_bcast_connmark_allowlist_refused(u32 mark, const char
      *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:378,1
    - Dst: blob_buf_init
      Src: /src/dnsmasq/src/ubus.c:378,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:379,1
    - Dst: blobmsg_add_u32
      Src: /src/dnsmasq/src/ubus.c:379,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:380,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:380,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:381,1
    - Dst: blobmsg_add_string
      Src: /src/dnsmasq/src/ubus.c:381,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:382,1
    - Dst: blobmsg_add_u32
      Src: /src/dnsmasq/src/ubus.c:382,1
    - Dst: CHECK
      Src: /src/dnsmasq/src/ubus.c:385,1
    - Dst: ubus_notify
      Src: /src/dnsmasq/src/ubus.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - mark
    - name
    - value
    - ttl
    argTypes:
    - u32
    - char*
    - char*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 386
    functionName: ubus_event_bcast_connmark_allowlist_resolved
    functionSourceFile: /src/dnsmasq/src/ubus.c
    functionUses: 1
    functionsReached:
    - CHECK
    - ubus_notify
    - blobmsg_add_string
    - blob_buf_init
    - blobmsg_add_u32
    linkageType: ''
    returnType: void
    signature: void ubus_event_bcast_connmark_allowlist_resolved(u32 mark, const char
      *name, const char *value, u32 ttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dnsmasq/src/cache.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - in
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: rrtype
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: unsigned short
    signature: unsigned short rrtype(char *in)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 170
    functionName: next_uid
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void next_uid(struct crec *crecp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc
      Src: /src/dnsmasq/src/cache.c:181,1
    - Dst: cache_link
      Src: /src/dnsmasq/src/cache.c:185,1
    - Dst: rehash
      Src: /src/dnsmasq/src/cache.c:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: cache_init
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 5
    functionsReached:
    - safe_malloc
    - rehash
    - cache_link
    linkageType: ''
    returnType: void
    signature: void cache_init(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: safe_malloc::safe_malloc
      Src: /src/dnsmasq/src/cache.c:209,1
    - Dst: whine_malloc::whine_malloc
      Src: /src/dnsmasq/src/cache.c:210,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:227,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:229,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - size
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 231
    functionName: rehash
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - free
    - cache_hash
    - safe_malloc::safe_malloc
    - whine_malloc::whine_malloc
    linkageType: ''
    returnType: void
    signature: void rehash(int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 248
    functionName: hash_bucket
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct crec
    signature: struct crec **hash_bucket(char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:257,1
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:258,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:274,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:274,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 280
    functionName: cache_hash
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - hostname_isequal
    - cache_get_name
    - hash_bucket
    linkageType: ''
    returnType: void
    signature: void cache_hash(struct crec *crecp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/cache.c:287,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/cache.c:290,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/cache.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 295
    functionName: cache_blockdata_free
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - blockdata_free
    linkageType: ''
    returnType: void
    signature: void cache_blockdata_free(struct crec *crecp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cache_blockdata_free
      Src: /src/dnsmasq/src/cache.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 297
    functionDepth: 2
    functionLinenumber: 297
    functionLinenumberEnd: 320
    functionName: cache_free
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - cache_blockdata_free
    linkageType: ''
    returnType: void
    signature: void cache_free(struct crec *crecp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 332
    functionName: cache_link
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cache_link(struct crec *crecp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 346
    functionName: cache_unlink
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cache_unlink (struct crec *crecp)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: cache_get_name
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *cache_get_name(struct crec *crecp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: cache_get_cname_target
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - cache_get_name
    linkageType: ''
    returnType: char
    signature: char *cache_get_cname_target(struct crec *crecp)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - init
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 389
    functionName: cache_enumerate
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct crec
    signature: struct crec *cache_enumerate(int init)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 1
    argNames:
    - crecp
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 404
    functionName: is_outdated_cname_pointer
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_outdated_cname_pointer(struct crec *crecp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: difftime
      Src: /src/dnsmasq/src/cache.c:417,1
    - Dst: difftime
      Src: /src/dnsmasq/src/cache.c:424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 2
    argNames:
    - now
    - crecp
    argTypes:
    - time_t
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 428
    functionName: is_expired
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - difftime
    linkageType: ''
    returnType: int
    signature: int is_expired(time_t now, struct crec *crecp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - uid
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 452
    functionName: cache_remove_uid
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int cache_remove_uid(const unsigned int uid)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:479,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:481,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:481,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:511,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:512,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:523,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:524,1
    - Dst: is_expired
      Src: /src/dnsmasq/src/cache.c:530,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:530,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:535,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:536,1
    - Dst: is_expired
      Src: /src/dnsmasq/src/cache.c:553,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:558,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:559,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:565,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:568,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:569,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 60
    argCount: 7
    argNames:
    - name
    - addr
    - class
    - now
    - flags
    - target_crec
    - target_uid
    argTypes:
    - char*
    - union all_addr*
    - unsigned short
    - time_t
    - unsigned int
    - struct crec**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 576
    functionName: cache_scan_free
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - cache_get_name
    - is_expired
    - cache_free
    - hostname_isequal
    - memcmp
    - cache_unlink
    - hash_bucket
    - is_outdated_cname_pointer
    linkageType: ''
    returnType: struct crec
    signature: "struct crec *cache_scan_free(char *name, union all_addr *addr, unsigned
      short class, time_t now,\n\t\t\t\t    unsigned int flags, struct crec **target_crec,
      unsigned int *target_uid)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 586
    functionDepth: 3
    functionLinenumber: 586
    functionLinenumberEnd: 599
    functionName: cache_start_insert
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 8
    functionsReached:
    - cache_free
    linkageType: ''
    returnType: void
    signature: void cache_start_insert(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: really_insert
      Src: /src/dnsmasq/src/cache.c:626,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 6
    argNames:
    - name
    - addr
    - class
    - now
    - ttl
    - flags
    argTypes:
    - char*
    - union all_addr*
    - unsigned short
    - time_t
    - unsigned long
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 601
    functionDepth: 1
    functionLinenumber: 601
    functionLinenumberEnd: 627
    functionName: cache_insert
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 5
    functionsReached:
    - really_insert
    linkageType: ''
    returnType: struct crec
    signature: "struct crec *cache_insert(char *name, union all_addr *addr, unsigned
      short class,\n\t\t\t  time_t now,  unsigned long ttl, unsigned int flags)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: cache_scan_free::cache_scan_free
      Src: /src/dnsmasq/src/cache.c:652,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/cache.c:661,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/cache.c:662,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/cache.c:664,1
    - Dst: IN6_ARE_ADDR_EQUAL
      Src: /src/dnsmasq/src/cache.c:665,1
    - Dst: addr::addr
      Src: /src/dnsmasq/src/cache.c:665,1
    - Dst: cache_tail::cache_tail
      Src: /src/dnsmasq/src/cache.c:676,1
    - Dst: flags::flags
      Src: /src/dnsmasq/src/cache.c:683,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:696,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:696,1
    - Dst: dump_cache_entry
      Src: /src/dnsmasq/src/cache.c:698,1
    - Dst: difftime
      Src: /src/dnsmasq/src/cache.c:709,1
    - Dst: ttd::ttd
      Src: /src/dnsmasq/src/cache.c:709,1
    - Dst: cache_scan_free
      Src: /src/dnsmasq/src/cache.c:716,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:723,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:731,1
    - Dst: target_crec::target_crec
      Src: /src/dnsmasq/src/cache.c:745,1
    - Dst: name::name
      Src: /src/dnsmasq/src/cache.c:755,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/cache.c:760,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:760,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:762,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 73
    argCount: 6
    argNames:
    - name
    - addr
    - class
    - now
    - ttl
    - flags
    argTypes:
    - char*
    - union all_addr*
    - unsigned short
    - time_t
    - unsigned long
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 630
    functionDepth: 4
    functionLinenumber: 630
    functionLinenumberEnd: 777
    functionName: really_insert
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - name::name
    - strcpy
    - cache_get_name
    - difftime
    - ttd::ttd
    - cache_scan_free::cache_scan_free
    - cache_tail::cache_tail
    - IN6_ARE_ADDR_EQUAL
    - my_syslog
    - _
    - whine_malloc
    - target_crec::target_crec
    - dump_cache_entry
    - flags::flags
    - cache_scan_free
    - strlen
    - addr::addr
    linkageType: ''
    returnType: struct crec
    signature: "struct crec *really_insert(char *name, union all_addr *addr, unsigned
      short class,\n\t\t\t\t  time_t now,  unsigned long ttl, unsigned int flags)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:789,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:796,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:797,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:800,1
    - Dst: cache_link
      Src: /src/dnsmasq/src/cache.c:801,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:808,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:809,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:815,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:816,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:817,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:818,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:819,1
    - Dst: blockdata_write
      Src: /src/dnsmasq/src/cache.c:825,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:830,1
    - Dst: blockdata_write
      Src: /src/dnsmasq/src/cache.c:831,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:835,1
    - Dst: blockdata_write
      Src: /src/dnsmasq/src/cache.c:838,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:851,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 780
    functionDepth: 3
    functionLinenumber: 780
    functionLinenumberEnd: 853
    functionName: cache_end_insert
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 4
    functionsReached:
    - cache_get_name
    - cache_link
    - cache_free
    - cache_hash
    - read_write
    - strlen
    - blockdata_write
    - is_outdated_cname_pointer
    linkageType: ''
    returnType: void
    signature: void cache_end_insert(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:830,1
    - Dst: blockdata_write
      Src: /src/dnsmasq/src/cache.c:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' F_DNSKEY'
    argTypes:
    - flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 828
    functionDepth: 2
    functionLinenumber: 828
    functionLinenumberEnd: 832
    functionName: if
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 7
    functionsReached:
    - blockdata_write
    - read_write
    linkageType: ''
    returnType: else
    signature: else if (flags & F_DNSKEY)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:835,1
    - Dst: blockdata_write
      Src: /src/dnsmasq/src/cache.c:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' F_DS'
    argTypes:
    - flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 833
    functionDepth: 2
    functionLinenumber: 833
    functionLinenumberEnd: 839
    functionName: if
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 7
    functionsReached:
    - blockdata_write
    - read_write
    linkageType: ''
    returnType: else
    signature: else if (flags & F_DS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:861,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:862,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:865,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 871
    functionName: cache_update_hwm
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 2
    functionsReached:
    - read_write
    linkageType: ''
    returnType: void
    signature: void cache_update_hwm(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:877,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:878,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:879,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - op
    - sets
    - flags
    - addr
    argTypes:
    - unsigned char
    - struct ipsets*
    - int
    - union all_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 875
    functionDepth: 1
    functionLinenumber: 875
    functionLinenumberEnd: 881
    functionName: cache_send_ipset
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - read_write
    linkageType: ''
    returnType: void
    signature: void cache_send_ipset(unsigned char op, struct ipsets *sets, int flags,
      union all_addr *addr)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:890,1
    - Dst: cache_start_insert
      Src: /src/dnsmasq/src/cache.c:905,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:913,1
    - Dst: cache_end_insert
      Src: /src/dnsmasq/src/cache.c:918,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:922,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:923,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:924,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:925,1
    - Dst: difftime
      Src: /src/dnsmasq/src/cache.c:930,1
    - Dst: really_insert
      Src: /src/dnsmasq/src/cache.c:934,1
    - Dst: next_uid
      Src: /src/dnsmasq/src/cache.c:946,1
    - Dst: blockdata_read
      Src: /src/dnsmasq/src/cache.c:958,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:963,1
    - Dst: blockdata_read
      Src: /src/dnsmasq/src/cache.c:965,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:970,1
    - Dst: blockdata_read
      Src: /src/dnsmasq/src/cache.c:972,1
    - Dst: really_insert
      Src: /src/dnsmasq/src/cache.c:976,1
    - Dst: blockdata_free
      Src: /src/dnsmasq/src/cache.c:977,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:988,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:992,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:996,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1013,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1014,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1015,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1016,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1017,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1018,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1019,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1020,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1021,1
    - Dst: return_reply
      Src: /src/dnsmasq/src/cache.c:1034,1
    - Dst: pop_and_retry_query
      Src: /src/dnsmasq/src/cache.c:1036,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1052,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1053,1
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:1054,1
    - Dst: add_to_ipset
      Src: /src/dnsmasq/src/cache.c:1063,1
    - Dst: add_to_nftset
      Src: /src/dnsmasq/src/cache.c:1068,1
    - Dst: log_query
      Src: /src/dnsmasq/src/cache.c:1072,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 88
    argCount: 2
    argNames:
    - now
    - fd
    argTypes:
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 886
    functionDepth: 6
    functionLinenumber: 886
    functionLinenumberEnd: 1082
    functionName: cache_recv_insert
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - add_to_ipset
    - log_query
    - difftime
    - return_reply
    - pop_and_retry_query
    - really_insert
    - cache_end_insert
    - blockdata_read
    - read_write
    - blockdata_free
    - next_uid
    - cache_start_insert
    - add_to_nftset
    linkageType: ''
    returnType: int
    signature: int cache_recv_insert(time_t now, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:963,1
    - Dst: blockdata_read
      Src: /src/dnsmasq/src/cache.c:965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' F_DNSKEY'
    argTypes:
    - flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 961
    functionDepth: 6
    functionLinenumber: 961
    functionLinenumberEnd: 967
    functionName: if
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 7
    functionsReached:
    - blockdata_read
    - read_write
    linkageType: ''
    returnType: else
    signature: else if (flags & F_DNSKEY)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_write
      Src: /src/dnsmasq/src/cache.c:970,1
    - Dst: blockdata_read
      Src: /src/dnsmasq/src/cache.c:972,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - ' F_DS'
    argTypes:
    - flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 968
    functionDepth: 6
    functionLinenumber: 968
    functionLinenumberEnd: 974
    functionName: if
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 7
    functionsReached:
    - blockdata_read
    - read_write
    linkageType: ''
    returnType: else
    signature: else if (flags & F_DS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:1088,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:1089,1
    - Dst: is_expired
      Src: /src/dnsmasq/src/cache.c:1090,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:1093,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1093,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 2
    argNames:
    - name
    - now
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1097
    functionName: cache_find_non_terminal
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 2
    functionsReached:
    - cache_get_name
    - is_expired
    - hostname_isequal
    - hash_bucket
    - is_outdated_cname_pointer
    linkageType: ''
    returnType: int
    signature: int cache_find_non_terminal(char *name, time_t now)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:1102,1
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:1115,1
    - Dst: is_expired
      Src: /src/dnsmasq/src/cache.c:1119,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:1119,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:1123,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1123,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:1132,1
    - Dst: cache_link
      Src: /src/dnsmasq/src/cache.c:1133,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:1168,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:1169,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:1180,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1180,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 42
    argCount: 4
    argNames:
    - crecp
    - name
    - now
    - prot
    argTypes:
    - struct crec*
    - char*
    - time_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1099
    functionDepth: 3
    functionLinenumber: 1099
    functionLinenumberEnd: 1184
    functionName: cache_find_by_name
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 5
    functionsReached:
    - cache_get_name
    - is_expired
    - cache_link
    - option_bool
    - cache_free
    - hostname_isequal
    - cache_unlink
    - hash_bucket
    - is_outdated_cname_pointer
    linkageType: ''
    returnType: struct crec
    signature: struct crec *cache_find_by_name(struct crec *crecp, char *name, time_t
      now, unsigned int prot)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: is_expired
      Src: /src/dnsmasq/src/cache.c:1207,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:1210,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:1219,1
    - Dst: cache_link
      Src: /src/dnsmasq/src/cache.c:1220,1
    - Dst: cache_unlink
      Src: /src/dnsmasq/src/cache.c:1230,1
    - Dst: cache_free
      Src: /src/dnsmasq/src/cache.c:1231,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:1241,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 4
    argNames:
    - crecp
    - addr
    - now
    - prot
    argTypes:
    - struct crec*
    - union all_addr*
    - time_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1186
    functionDepth: 3
    functionLinenumber: 1186
    functionLinenumberEnd: 1245
    functionName: cache_find_by_addr
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 3
    functionsReached:
    - is_expired
    - cache_link
    - cache_free
    - memcmp
    - cache_unlink
    linkageType: ''
    returnType: struct crec
    signature: "struct crec *cache_find_by_addr(struct crec *crecp, union all_addr
      *addr, \n\t\t\t\ttime_t now, unsigned int prot)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/cache.c:1255,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1255,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:1256,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:1258,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:1286,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/cache.c:1302,1
    - Dst: memcpy
      Src: /src/dnsmasq/src/cache.c:1308,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:1309,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1310,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 6
    argNames:
    - cache
    - addr
    - addrlen
    - index
    - rhash
    - hashsz
    argTypes:
    - struct crec*
    - union all_addr*
    - int
    - unsigned int
    - struct crec**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1247
    functionDepth: 4
    functionLinenumber: 1247
    functionLinenumberEnd: 1311
    functionName: add_hosts_entry
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - make_non_terminals
    - cache_get_name
    - cache_hash
    - cache_find_by_name
    - memcmp
    - free
    - memcpy
    - cache_find_by_addr
    linkageType: ''
    returnType: void
    signature: "void add_hosts_entry(struct crec *cache, union all_addr *addr, int
      addrlen, \n\t\t\t    unsigned int index, struct crec **rhash, int hashsz)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/dnsmasq/src/cache.c:1319,1
    - Dst: getc
      Src: /src/dnsmasq/src/cache.c:1321,1
    - Dst: isspace
      Src: /src/dnsmasq/src/cache.c:1326,1
    - Dst: ungetc
      Src: /src/dnsmasq/src/cache.c:1328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - f
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1313
    functionDepth: 0
    functionLinenumber: 1313
    functionLinenumberEnd: 1335
    functionName: eatspace
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - isspace
    - getc
    - ungetc
    linkageType: ''
    returnType: int
    signature: int eatspace(FILE *f)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/dnsmasq/src/cache.c:1343,1
    - Dst: isspace
      Src: /src/dnsmasq/src/cache.c:1346,1
    - Dst: ungetc
      Src: /src/dnsmasq/src/cache.c:1348,1
    - Dst: eatspace
      Src: /src/dnsmasq/src/cache.c:1349,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - f
    - token
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1358
    functionName: gettok
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached:
    - eatspace
    - isspace
    - getc
    - ungetc
    linkageType: ''
    returnType: int
    signature: int gettok(FILE *f, char *token)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/dnsmasq/src/cache.c:1362,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1371,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1371,1
    - Dst: strerror
      Src: /src/dnsmasq/src/cache.c:1371,1
    - Dst: eatspace
      Src: /src/dnsmasq/src/cache.c:1375,1
    - Dst: gettok
      Src: /src/dnsmasq/src/cache.c:1377,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/cache.c:1379,1
    - Dst: get_domain
      Src: /src/dnsmasq/src/cache.c:1383,1
    - Dst: inet_pton
      Src: /src/dnsmasq/src/cache.c:1385,1
    - Dst: get_domain6
      Src: /src/dnsmasq/src/cache.c:1389,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1393,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1393,1
    - Dst: gettok
      Src: /src/dnsmasq/src/cache.c:1395,1
    - Dst: rehash
      Src: /src/dnsmasq/src/cache.c:1403,1
    - Dst: gettok
      Src: /src/dnsmasq/src/cache.c:1413,1
    - Dst: strchr
      Src: /src/dnsmasq/src/cache.c:1416,1
    - Dst: canonicalise
      Src: /src/dnsmasq/src/cache.c:1418,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:1421,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1422,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:1422,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:1422,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/cache.c:1424,1
    - Dst: strcat
      Src: /src/dnsmasq/src/cache.c:1425,1
    - Dst: strcat
      Src: /src/dnsmasq/src/cache.c:1426,1
    - Dst: add_hosts_entry
      Src: /src/dnsmasq/src/cache.c:1429,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1433,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:1433,1
    - Dst: strcpy
      Src: /src/dnsmasq/src/cache.c:1435,1
    - Dst: add_hosts_entry
      Src: /src/dnsmasq/src/cache.c:1438,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:1442,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1446,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1446,1
    - Dst: fclose
      Src: /src/dnsmasq/src/cache.c:1452,1
    - Dst: rehash
      Src: /src/dnsmasq/src/cache.c:1455,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1457,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1457,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 5
    argNames:
    - filename
    - index
    - cache_size
    - rhash
    - hashsz
    argTypes:
    - char*
    - unsigned int
    - int
    - struct crec**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1360
    functionDepth: 5
    functionLinenumber: 1360
    functionLinenumberEnd: 1460
    functionName: read_hostsfile
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 2
    functionsReached:
    - get_domain6
    - fclose
    - strerror
    - eatspace
    - strlen
    - rehash
    - strcat
    - inet_pton
    - whine_malloc
    - fopen
    - canonicalise
    - option_bool
    - my_syslog
    - _
    - free
    - get_domain
    - strcpy
    - add_hosts_entry
    - gettok
    - strchr
    linkageType: ''
    returnType: int
    signature: int read_hostsfile(char *filename, unsigned int index, int cache_size,
      struct crec **rhash, int hashsz)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: cache_blockdata_free
      Src: /src/dnsmasq/src/cache.c:1486,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:1492,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1511,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:1519,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1520,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1525,1
    - Dst: blockdata_alloc
      Src: /src/dnsmasq/src/cache.c:1526,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:1542,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1543,1
    - Dst: memset
      Src: /src/dnsmasq/src/cache.c:1548,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1558,1
    - Dst: add_hosts_entry
      Src: /src/dnsmasq/src/cache.c:1563,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1567,1
    - Dst: add_hosts_entry
      Src: /src/dnsmasq/src/cache.c:1572,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:1576,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1579,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1579,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:1583,1
    - Dst: read_hostsfile
      Src: /src/dnsmasq/src/cache.c:1584,1
    - Dst: expand_filelist
      Src: /src/dnsmasq/src/cache.c:1586,1
    - Dst: read_hostsfile
      Src: /src/dnsmasq/src/cache.c:1589,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1598,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1604,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1610,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1616,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1622,1
    - Dst: set_dynamic_inotify
      Src: /src/dnsmasq/src/cache.c:1626,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1462
    functionDepth: 6
    functionLinenumber: 1462
    functionLinenumberEnd: 1629
    functionName: cache_reload
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - make_non_terminals
    - memset
    - add_hosts_entry
    - read_hostsfile
    - option_bool
    - cache_hash
    - whine_malloc
    - my_syslog
    - _
    - blockdata_alloc
    - cache_blockdata_free
    - expand_filelist
    - free
    - set_dynamic_inotify
    linkageType: ''
    returnType: void
    signature: void cache_reload(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/cache.c:1639,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1643,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1643,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - name
    - now
    argTypes:
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1632
    functionDepth: 4
    functionLinenumber: 1632
    functionLinenumberEnd: 1647
    functionName: a_record_from_hosts
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 4
    functionsReached:
    - my_syslog
    - cache_find_by_name
    - _
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr a_record_from_hosts(char *name, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1649
    functionDepth: 0
    functionLinenumber: 1649
    functionLinenumberEnd: 1664
    functionName: cache_unhash_dhcp
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cache_unhash_dhcp(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/cache.c:1680,1
    - Dst: cache_find_by_name
      Src: /src/dnsmasq/src/cache.c:1682,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1688,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1689,1
    - Dst: memcmp
      Src: /src/dnsmasq/src/cache.c:1691,1
    - Dst: cache_scan_free
      Src: /src/dnsmasq/src/cache.c:1698,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/cache.c:1711,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:1712,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:1713,1
    - Dst: record_source
      Src: /src/dnsmasq/src/cache.c:1716,1
    - Dst: cache_find_by_addr
      Src: /src/dnsmasq/src/cache.c:1720,1
    - Dst: cache_scan_free
      Src: /src/dnsmasq/src/cache.c:1725,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1734,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:1746,1
    - Dst: make_non_terminals
      Src: /src/dnsmasq/src/cache.c:1747,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 4
    argNames:
    - host_name
    - prot
    - host_address
    - ttd
    argTypes:
    - char*
    - int
    - union all_addr*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1666
    functionDepth: 4
    functionLinenumber: 1666
    functionLinenumberEnd: 1749
    functionName: cache_add_dhcp_entry
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - make_non_terminals
    - whine_malloc
    - my_syslog
    - cache_find_by_name
    - _
    - cache_hash
    - memcmp
    - cache_scan_free
    - record_source
    - cache_find_by_addr
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: "void cache_add_dhcp_entry(char *host_name, int prot,\n\t\t\t  union
      all_addr *host_address, time_t ttd)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1759,1
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:1772,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:1776,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:1780,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1780,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:1791,1
    - Dst: strchr
      Src: /src/dnsmasq/src/cache.c:1798,1
    - Dst: hash_bucket
      Src: /src/dnsmasq/src/cache.c:1803,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:1804,1
    - Dst: hostname_isequal
      Src: /src/dnsmasq/src/cache.c:1807,1
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1807,1
    - Dst: difftime
      Src: /src/dnsmasq/src/cache.c:1818,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1832,1
    - Dst: cache_hash
      Src: /src/dnsmasq/src/cache.c:1841,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 43
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct crec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1757
    functionDepth: 3
    functionLinenumber: 1757
    functionLinenumberEnd: 1844
    functionName: make_non_terminals
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 3
    functionsReached:
    - cache_get_name
    - difftime
    - hostname_isequal
    - whine_malloc
    - cache_hash
    - strchr
    - free
    - hash_bucket
    - is_outdated_cname_pointer
    linkageType: ''
    returnType: void
    signature: void make_non_terminals(struct crec *source)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1855,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1863,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1867,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1871,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1875,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1879,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1884,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/cache.c:1900,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/cache.c:1906,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/cache.c:1909,1
    - Dst: whine_realloc::whine_realloc
      Src: /src/dnsmasq/src/cache.c:1914,1
    - Dst: snprintf
      Src: /src/dnsmasq/src/cache.c:1921,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:1932,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct txt_record*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1937
      start: 1847
    functionDepth: 2
    functionLinenumber: 1847
    functionLinenumberEnd: 1937
    functionName: cache_make_stat
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - snprintf
    - sprintf
    - whine_malloc
    - whine_realloc::whine_realloc
    - sockaddr_isequal
    - strlen
    - prettyprint_addr
    linkageType: ''
    returnType: int
    signature: int cache_make_stat(struct txt_record *t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/dnsmasq/src/cache.c:1954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1945
    functionDepth: 0
    functionLinenumber: 1945
    functionLinenumberEnd: 1967
    functionName: sanitise
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 4
    functionsReached:
    - isprint
    linkageType: ''
    returnType: char
    signature: char *sanitise(char *name)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_name
      Src: /src/dnsmasq/src/cache.c:1975,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:1978,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:1992,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:1996,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/cache.c:1996,1
    - Dst: is_outdated_cname_pointer
      Src: /src/dnsmasq/src/cache.c:1997,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/cache.c:1998,1
    - Dst: cache_get_cname_target
      Src: /src/dnsmasq/src/cache.c:1998,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2002,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2002,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2004,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2004,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2010,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2014,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/cache.c:2021,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/cache.c:2023,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2043,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2054,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2056,1
    - Dst: ctime
      Src: /src/dnsmasq/src/cache.c:2056,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2059,1
    - Dst: record_source
      Src: /src/dnsmasq/src/cache.c:2059,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2061,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 48
    argCount: 2
    argNames:
    - cache
    - now
    argTypes:
    - struct crec*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 1969
    functionDepth: 3
    functionLinenumber: 1969
    functionLinenumberEnd: 2062
    functionName: dump_cache_entry
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - cache_get_name
    - querystr
    - sprintf
    - whine_malloc
    - cache_get_cname_target
    - my_syslog
    - ctime
    - record_source
    - strlen
    - is_outdated_cname_pointer
    - sanitise
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void dump_cache_entry(struct crec *cache, time_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2068,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2068,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2069,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2069,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2071,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2071,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2074,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2074,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2076,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2076,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2079,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2079,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2080,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2080,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2081,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2081,1
    - Dst: blockdata_report
      Src: /src/dnsmasq/src/cache.c:2084,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2085,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2085,1
    - Dst: sockaddr_isequal
      Src: /src/dnsmasq/src/cache.c:2103,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/cache.c:2113,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2114,1
    - Dst: _
      Src: /src/dnsmasq/src/cache.c:2114,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2118,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2118,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2122,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2123,1
    - Dst: dump_cache_entry
      Src: /src/dnsmasq/src/cache.c:2127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2064
    functionDepth: 4
    functionLinenumber: 2064
    functionLinenumberEnd: 2129
    functionName: dump_cache
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - option_bool
    - my_syslog
    - blockdata_report
    - _
    - dump_cache_entry
    - sockaddr_isequal
    - prettyprint_addr
    linkageType: ''
    returnType: void
    signature: void dump_cache(time_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2156
      start: 2131
    functionDepth: 0
    functionLinenumber: 2131
    functionLinenumberEnd: 2156
    functionName: record_source
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *record_source(unsigned int index)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:2170,1
    - Dst: strlen
      Src: /src/dnsmasq/src/cache.c:2177,1
    - Dst: free
      Src: /src/dnsmasq/src/cache.c:2184,1
    - Dst: whine_malloc
      Src: /src/dnsmasq/src/cache.c:2188,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2197,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2199,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2204,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2206,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - desc
    - type
    argTypes:
    - char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2158
    functionDepth: 2
    functionLinenumber: 2158
    functionLinenumberEnd: 2211
    functionName: querystr
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 1
    functionsReached:
    - free
    - strlen
    - whine_malloc
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *querystr(char *desc, unsigned short type)
  - BBCount: 32
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 65
    argCount: 1
    argNames:
    - ede
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2213
    functionDepth: 0
    functionLinenumber: 2213
    functionLinenumberEnd: 2249
    functionName: edestr
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *edestr(int ede)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2260,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2264,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2269,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2274,1
    - Dst: sanitise
      Src: /src/dnsmasq/src/cache.c:2278,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2287,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2289,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2292,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2306,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2311,1
    - Dst: edestr
      Src: /src/dnsmasq/src/cache.c:2311,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/src/cache.c:2316,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2321,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2367,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2370,1
    - Dst: edestr
      Src: /src/dnsmasq/src/cache.c:2370,1
    - Dst: sprintf
      Src: /src/dnsmasq/src/cache.c:2401,1
    - Dst: querystr
      Src: /src/dnsmasq/src/cache.c:2406,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2416,1
    - Dst: option_bool
      Src: /src/dnsmasq/src/cache.c:2421,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2428,1
    - Dst: prettyprint_addr
      Src: /src/dnsmasq/src/cache.c:2431,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2432,1
    - Dst: my_syslog
      Src: /src/dnsmasq/src/cache.c:2436,1
    CyclomaticComplexity: 51
    EdgeCount: 51
    ICount: 124
    argCount: 5
    argNames:
    - flags
    - name
    - addr
    - arg
    - type
    argTypes:
    - unsigned int
    - char*
    - union all_addr*
    - char*
    - unsigned short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2437
      start: 2251
    functionDepth: 3
    functionLinenumber: 2251
    functionLinenumberEnd: 2437
    functionName: log_query
    functionSourceFile: /src/dnsmasq/src/cache.c
    functionUses: 16
    functionsReached:
    - querystr
    - edestr
    - option_bool
    - sprintf
    - my_syslog
    - prettyprint_addr
    - sanitise
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void log_query(unsigned int flags, char *name, union all_addr *addr,
      char *arg, unsigned short type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: option_len
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_len(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opt
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: option_ptr
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_ptr(opt, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: GETSHORT
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETSHORT(s, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: GETLONG
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GETLONG(l, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 109
    functionName: PUTSHORT
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTSHORT(s, cp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - l
    - ','
    - cp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 119
    functionName: PUTLONG
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUTLONG(l, cp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 234
    functionName: lookup_dhcp_opt
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 1
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int lookup_dhcp_opt(char *name)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:247,1
    - Dst: strncat
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:257,1
    - Dst: strlen
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:257,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:259,1
    - Dst: inet_ntop
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:260,1
    - Dst: strncat
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:261,1
    - Dst: strlen
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:261,1
    - Dst: isprint
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:268,1
    - Dst: prettyprint_time
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:279,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:281,1
    - Dst: print_mac
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:297,1
    - Dst: strncat
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:299,1
    - Dst: strlen
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:299,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 5
    argNames:
    - opt
    - val
    - opt_len
    - buf
    - buf_len
    argTypes:
    - unsigned int
    - unsigned char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 306
    functionName: option_string
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 4
    functionsReached:
    - memset
    - isprint
    - sprintf
    - memcpy
    - prettyprint_time
    - print_mac
    - strncat
    - strlen
    - inet_ntop
    linkageType: ''
    returnType: char
    signature: char *option_string(unsigned int opt, unsigned char *val, int opt_len,
      char *buf, int buf_len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:311,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:316,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:318,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:320,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:322,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - t
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 324
    functionName: prettyprint_time
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 5
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: void
    signature: void prettyprint_time(char *buf, unsigned int t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:332,1
    - Dst: sprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - buff
    - mac
    - len
    argTypes:
    - char*
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 338
    functionName: print_mac
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 9
    functionsReached:
    - sprintf
    linkageType: ''
    returnType: char
    signature: char *print_mac(char *buff, unsigned char *mac, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - pktp
    argTypes:
    - struct dhcp_packet_with_opts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 346
    functionName: dhcp_skip_opts
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *dhcp_skip_opts(struct dhcp_packet_with_opts *pktp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - pktp
    - optno
    argTypes:
    - struct dhcp_packet_with_opts*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 359
    functionName: dhcp_find_opt
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *dhcp_find_opt(struct dhcp_packet_with_opts *pktp, int
      optno)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - pktp
    - opt
    - len
    - val
    argTypes:
    - struct dhcp_packet_with_opts*
    - int
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 373
    functionName: option_put
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 2
    functionsReached:
    - dhcp_skip_opts
    linkageType: ''
    returnType: void
    signature: void option_put(struct dhcp_packet_with_opts *pktp, int opt, int len,
      unsigned int val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:379,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:384,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - pktp
    - opt
    - string
    - null_term
    argTypes:
    - struct dhcp_packet_with_opts*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 390
    functionName: option_put_string
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 3
    functionsReached:
    - dhcp_skip_opts
    - strlen
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void option_put_string(struct dhcp_packet_with_opts *pktp, int opt,
      \n\t\t\t      const char *string, int null_term)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isxdigit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:407,1
    - Dst: strtol
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:418,1
    - Dst: strcmp
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:424,1
    - Dst: strchr
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:442,1
    - Dst: strtol
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:444,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 5
    argNames:
    - in
    - out
    - maxlen
    - wildcard_mask
    - mac_type
    argTypes:
    - char*
    - unsigned char*
    - int
    - unsigned int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 461
    functionName: parse_hex
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 5
    functionsReached:
    - strtol
    - strchr
    - isxdigit
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int parse_hex(char *in, unsigned char *out, int maxlen, \n\t      unsigned
      int *wildcard_mask, int *mac_type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:467,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 479
    functionName: split_chr
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 3
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *split_chr(char *s, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split_chr
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 484
    functionName: split
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 5
    functionsReached:
    - split_chr
    linkageType: ''
    returnType: char
    signature: char *split(char *s)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:503,1
    - Dst: srand
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:504,1
    - Dst: rand
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:505,1
    - Dst: socket
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:508,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:510,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:511,1
    - Dst: getopt
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:516,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:524,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:532,1
    - Dst: atoi
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:535,1
    - Dst: strncpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:539,1
    - Dst: ioctl
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:541,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:543,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:544,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:551,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:553,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:554,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:559,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:561,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:562,1
    - Dst: parse_hex
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:568,1
    - Dst: parse_hex
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:574,1
    - Dst: split
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:584,1
    - Dst: lookup_dhcp_opt
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:586,1
    - Dst: atoi
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:586,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:599,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:600,1
    - Dst: memset
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:603,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:609,1
    - Dst: htonl
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:610,1
    - Dst: option_put
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:615,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:619,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:622,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:627,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:630,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:636,1
    - Dst: bind
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:639,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:641,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:642,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:647,1
    - Dst: sendto
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:650,1
    - Dst: dhcp_skip_opts
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:650,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:655,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:656,1
    - Dst: recv
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:659,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:663,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:664,1
    - Dst: dhcp_find_opt
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:669,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:673,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:675,1
    - Dst: print_mac
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:678,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:679,1
    - Dst: inet_ntoa
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:679,1
    - Dst: option_string
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:687,1
    - Dst: option_ptr
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:687,1
    - Dst: option_len
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:687,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:689,1
    - Dst: option_len
      Src: /src/dnsmasq/contrib/leasequery/leasequery.c:689,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 126
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 695
    functionName: main
    functionSourceFile: /src/dnsmasq/contrib/leasequery/leasequery.c
    functionUses: 26
    functionsReached:
    - getopt
    - bind
    - option_string
    - split
    - option_ptr
    - recv
    - socket
    - htonl
    - dhcp_find_opt
    - gettimeofday
    - inet_pton
    - print_mac
    - htons
    - strncpy
    - srand
    - parse_hex
    - memcpy
    - rand
    - lookup_dhcp_opt
    - ioctl
    - fprintf
    - dhcp_skip_opts
    - exit
    - option_put
    - printf
    - inet_ntoa
    - memset
    - option_len
    - atoi
    - sendto
    - perror
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc::malloc
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:85,1
    - Dst: free
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:94,1
    - Dst: iov::iov
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - iov
    - size
    argTypes:
    - struct iovec*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 101
    functionName: expand_buf
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 7
    functionsReached:
    - iov::iov
    - free
    - malloc::malloc
    linkageType: ''
    returnType: int
    signature: int expand_buf(struct iovec *iov, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recvmsg
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:118,1
    - Dst: expand_buf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:124,1
    - Dst: expand_buf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:132,1
    - Dst: recvmsg
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:137,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 140
    functionName: netlink_recv
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 2
    functionsReached:
    - expand_buf
    - recvmsg
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t netlink_recv(int fd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:161,1
    - Dst: strtol
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:167,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 4
    argNames:
    - in
    - out
    - maxlen
    - mac_type
    argTypes:
    - char*
    - unsigned char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 174
    functionName: parse_hex
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 6
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int parse_hex(char *in, unsigned char *out, int maxlen, int *mac_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - mask
    argTypes:
    - struct in_addr
    - struct in_addr
    - struct in_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: is_same_net
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_same_net(struct in_addr a, struct in_addr b, struct in_addr
      mask)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:204,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:207,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:208,1
    - Dst: netlink_recv
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:213,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:215,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:216,1
    - Dst: NLMSG_OK
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:219,1
    - Dst: NLMSG_NEXT
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:219,1
    - Dst: ioctl
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:224,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:228,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:229,1
    - Dst: NLMSG_DATA
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:234,1
    - Dst: NLMSG_LENGTH
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:236,1
    - Dst: htonl
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:242,1
    - Dst: IFA_RTA
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:245,1
    - Dst: RTA_OK
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:245,1
    - Dst: RTA_NEXT
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:245,1
    - Dst: is_same_net
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:249,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:255,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 5
    argNames:
    - client
    - fd
    - index
    - ifrfd
    - ifr
    argTypes:
    - struct in_addr
    - int
    - unsigned int
    - int
    - struct ifreq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 256
    functionName: find_interface
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 0
    functionsReached:
    - RTA_NEXT
    - NLMSG_DATA
    - ioctl
    - fprintf
    - exit
    - netlink_recv
    - NLMSG_OK
    - NLMSG_LENGTH
    - NLMSG_NEXT
    - is_same_net
    - sendto
    - perror
    - htonl
    - IFA_RTA
    - RTA_OK
    linkageType: ''
    returnType: struct in_addr
    signature: struct in_addr find_interface(struct in_addr client, int fd, unsigned
      int index, int ifrfd, struct ifreq *ifr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:266,1
    - Dst: socket
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:267,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:271,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:272,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:277,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:278,1
    - Dst: memset
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:283,1
    - Dst: strncpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:284,1
    - Dst: setsockopt
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:286,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:288,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:289,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:292,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:294,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:295,1
    - Dst: find_interface
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:298,1
    - Dst: if_nametoindex
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:298,1
    - Dst: memset
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:300,1
    - Dst: parse_hex
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:302,1
    - Dst: htonl
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:310,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:318,1
    - Dst: strcmp
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:321,1
    - Dst: parse_hex
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:323,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:332,1
    - Dst: sendto
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:335,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:338,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release.c:339,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 343
    functionName: main
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    functionUses: 26
    functionsReached:
    - memset
    - perror
    - if_nametoindex
    - strcmp
    - fprintf
    - inet_pton
    - exit
    - ntohs
    - sendto
    - strncpy
    - parse_hex
    - socket
    - htonl
    - memcpy
    - find_interface
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:147,1
    - Dst: strtok
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:151,1
    - Dst: strtol
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:153,1
    - Dst: free
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - str
    - dst
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: pack_duid
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - free
    - strtol
    - strtok
    - strdup
    linkageType: ''
    returnType: size_t
    signature: size_t pack_duid(const char* str, char* dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:165,1
    - Dst: bzero
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:166,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:167,1
    - Dst: pack_duid
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - duid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: create_client_id_option
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - pack_duid
    - bzero
    - htons
    linkageType: ''
    returnType: struct dhcp6_option
    signature: struct dhcp6_option create_client_id_option(const char* duid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:174,1
    - Dst: bzero
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:175,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:176,1
    - Dst: pack_duid
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - duid
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: create_server_id_option
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - pack_duid
    - bzero
    - htons
    linkageType: ''
    returnType: struct dhcp6_option
    signature: struct dhcp6_option create_server_id_option(const char* duid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:183,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:185,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:188,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:191,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:193,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ip
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 198
    functionName: create_iaadr_option
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - fprintf
    - exit
    - htons
    - perror
    linkageType: ''
    returnType: struct dhcp6_iaaddr_option
    signature: struct dhcp6_iaaddr_option create_iaadr_option(const char* ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:203,1
    - Dst: htonl
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:204,1
    - Dst: atoi
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:204,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:207,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:207,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:208,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - iaid
    - ia_addr
    argTypes:
    - char*
    - struct dhcp6_iaaddr_option
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 210
    functionName: create_iana_option
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - ntohs
    - atoi
    - htons
    - htonl
    - memcpy
    linkageType: ''
    returnType: struct dhcp6_iana_option
    signature: struct dhcp6_iana_option create_iana_option(const char * iaid, struct
      dhcp6_iaaddr_option  ia_addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bzero
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:215,1
    - Dst: bzero
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:219,1
    - Dst: create_client_id_option
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:221,1
    - Dst: create_server_id_option
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:222,1
    - Dst: create_iaadr_option
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:223,1
    - Dst: create_iana_option
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:224,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:226,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:226,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:227,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:228,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:228,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:229,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:230,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:230,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - iaid
    - ip
    - client_id
    - server_id
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 234
    functionName: create_release_packet
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - bzero
    - create_iana_option
    - ntohs
    - create_server_id_option
    - create_iaadr_option
    - memcpy
    - create_client_id_option
    linkageType: ''
    returnType: struct dhcp6_packet
    signature: struct dhcp6_packet create_release_packet(const char* iaid, const char*
      ip, const char* client_id, const char* server_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:243,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:244,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:245,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:246,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:251,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:252,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:255,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 264
    functionName: parse_iana_suboption
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - fprintf
    - memcpy
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t parse_iana_suboption(char* buf, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:281,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:282,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:283,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:284,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:289,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:290,1
    - Dst: memcpy
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:293,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:294,1
    - Dst: parse_iana_suboption
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 313
    functionName: parse_packet
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - fprintf
    - parse_iana_suboption
    - memcpy
    - ntohs
    linkageType: ''
    returnType: int16_t
    signature: int16_t parse_packet(char* buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - stream
    argTypes:
    - char*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 319
    functionName: usage
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 1
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void usage(const char* arg, FILE* stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:323,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - errstr
    - exitcode
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 325
    functionName: fail_fatal
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - perror
    - exit
    linkageType: ''
    returnType: void
    signature: void fail_fatal(const char *errstr, int exitcode)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:331,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:335,1
    - Dst: setsockopt
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:339,1
    - Dst: strlen
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:339,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:341,1
    - Dst: close
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:342,1
    - Dst: memset
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:346,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:349,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:352,1
    - Dst: fail_fatal
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:353,1
    - Dst: bind
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:354,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:355,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:356,1
    - Dst: fail_fatal
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:357,1
    - Dst: htons
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:358,1
    - Dst: sendto
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:363,1
    - Dst: fail_fatal
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:364,1
    - Dst: recvfrom
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:366,1
    - Dst: sleep
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:371,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:376,1
    - Dst: parse_packet
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:382,1
    - Dst: sleep
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:385,1
    - Dst: close
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:389,1
    - Dst: close
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:393,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:394,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 2
    argNames:
    - iface
    - packet
    argTypes:
    - char*
    - struct dhcp6_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 327
    functionDepth: 2
    functionLinenumber: 327
    functionLinenumberEnd: 396
    functionName: send_release_packet
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 0
    functionsReached:
    - fail_fatal
    - memset
    - perror
    - recvfrom
    - parse_packet
    - inet_pton
    - fprintf
    - bind
    - close
    - sleep
    - htons
    - sendto
    - socket
    - strlen
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int send_release_packet(const char* iface, struct dhcp6_packet* packet)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:411,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:421,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:423,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:424,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:446,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:449,1
    - Dst: abort
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:452,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:459,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:460,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:466,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:467,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:473,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:474,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:480,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:481,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:487,1
    - Dst: usage
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:488,1
    - Dst: create_release_packet
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:494,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:501,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:503,1
    - Dst: send_release_packet
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c:507,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 73
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 508
    functionName: main
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    functionUses: 26
    functionsReached:
    - send_release_packet
    - abort
    - fprintf
    - printf
    - usage
    - getopt_long
    - create_release_packet
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *  const argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: option_len
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_len(opt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - opt
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: option_ptr
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: option_ptr(opt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: option_len
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:85,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - p
    - end
    - opt
    - minsize
    argTypes:
    - unsigned char*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 95
    functionName: option_find1
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 2
    functionsReached:
    - option_len
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *option_find1(unsigned char *p, unsigned char *end, int
      opt, int minsize)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: option_find1
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:102,1
    - Dst: option_find1
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:106,1
    - Dst: option_find1
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:111,1
    - Dst: option_find1
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - mess
    - size
    - opt_type
    - minsize
    argTypes:
    - struct dhcp_packet*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 120
    functionName: option_find
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 2
    functionsReached:
    - option_find1
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char *option_find(struct dhcp_packet *mess, size_t size, int
      opt_type, int minsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: option_ptr
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - opt
    - size
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 133
    functionName: option_uint
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 3
    functionsReached:
    - option_ptr
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int option_uint(unsigned char *opt, int size)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:141,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:146,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:147,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:152,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:153,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:156,1
    - Dst: fprintf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:158,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:159,1
    - Dst: memset
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:162,1
    - Dst: htonl
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:169,1
    - Dst: inet_pton
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:184,1
    - Dst: ntohs
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:185,1
    - Dst: sendto
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:187,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:190,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:191,1
    - Dst: alarm
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:194,1
    - Dst: recv
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:196,1
    - Dst: perror
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:200,1
    - Dst: exit
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:201,1
    - Dst: option_find
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:204,1
    - Dst: option_uint
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:206,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:208,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:213,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:215,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:217,1
    - Dst: printf
      Src: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c:219,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 225
    functionName: main
    functionSourceFile: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    functionUses: 26
    functionsReached:
    - memset
    - perror
    - fprintf
    - inet_pton
    - exit
    - ntohs
    - option_uint
    - printf
    - alarm
    - recv
    - sendto
    - socket
    - htonl
    - option_find
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
Fuzzer filename: /src/fuzz_util.c
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- sys/utsname.h
- netinet6/in6_var.h
- linux/capability.h
- nettle/bignum.h
- strings.h
- sys/types.h
- signal.h
- lauxlib.h
- linux/types.h
- netinet/icmp6.h
- net/route.h
- poll.h
- setjmp.h
- fuzz_header.h
- nettle/ecc-curve.h
- sys/stat.h
- lualib.h
- libubus.h
- linux/rtnetlink.h
- netinet/tcp.h
- sys/socket.h
- dns-protocol.h
- dirent.h
- sys/sysctl.h
- net/if_var.h
- ip6addr.h
- idn2.h
- linux/sockios.h
- getopt.h
- unistd.h
- nettle/gostdsa.h
- dnsmasq.h
- sys/times.h
- stdint.h
- stddef.h
- sys/time.h
- time.h
- stdio.h
- stdlib.h
- netinet/in.h
- linux/netlink.h
- features.h
- dbus/dbus.h
- dhcp6-protocol.h
- libintl.h
- syslog.h
- sys/sockio.h
- nettle/ecdsa.h
- err.h
- priv.h
- lua.h
- net/if_dl.h
- sys/ioctl.h
- netinet/in_var.h
- netdb.h
- netinet/in_systm.h
- nftables/libnftables.h
- linux/if_addr.h
- idna.h
- android/log.h
- netinet/if_ether.h
- netinet/ip_icmp.h
- ctype.h
- sys/prctl.h
- string.h
- locale.h
- stdarg.h
- nettle/eddsa.h
- libnetfilter_conntrack/libnetfilter_conntrack.h
- radv-protocol.h
- sys/un.h
- fcntl.h
- sys/uio.h
- sys/param.h
- metrics.h
- arpa/inet.h
- net/if_arp.h
- limits.h
- nettle/rsa.h
- grp.h
- net/ethernet.h
- pwd.h
- net/bpf.h
- netinet/ip6.h
- nettle/nettle-meta.h
- dhcp-protocol.h
- sys/wait.h
- errno.h
- ifaddrs.h
- linux/version.h
- sys/select.h
- net/if.h
- net/pfvar.h
- zone.h
- netinet/ip.h
- config.h
- alloca.h
- sys/inotify.h
report: name
sources:
- function_names:
  - gb_init
  - gb_cleanup
  - get_len_null_terminated
  - get_null_terminated
  - gb_get_random_data
  - gb_get_null_terminated
  - gb_get_len_null_terminated
  - gb_alloc_data
  - get_short
  - get_int
  - fuzz_ioctl
  - fuzz_recvmsg
  - init_daemon
  - CLEAN_IF_NULL
  source_file: /src/fuzz_header.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: GB_SIZE
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/fuzz_header.h
      type_or_value: '100'
    - item_type: preproc_def
      name: STR_SIZE
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/fuzz_header.h
      type_or_value: '75'
    structs: []
    typedefs: []
    union: []
- function_names:
  - FuzzExtractTheAddress
  - FuzzAnswerTheRequest
  - FuzzIgnoredAddress
  - FuzzCheckLocalDomain
  - FuzzExtractRequest
  - FuzzArpaName2Addr
  - FuzzResizePacket
  - FuzzSetupReply
  - FuzzCheckForBogusWildcard
  - LLVMFuzzerTestOneInput
  source_file: /src/fuzz_rfc1035.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TS
      pos:
        line_end: 235
        line_start: 234
        source_file: /src/fuzz_rfc1035.c
      type_or_value: '9'
    structs: []
    typedefs: []
    union: []
- function_names:
  - FuzzDhcp
  - LLVMFuzzerTestOneInput
  source_file: /src/fuzz_dhcp.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FuzzDhcp
  - LLVMFuzzerTestOneInput
  source_file: /src/fuzz_dhcp6.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FuzzAuth
  - LLVMFuzzerTestOneInput
  source_file: /src/fuzz_auth.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/fuzz_util.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dnsmasq/src/config.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FTABSIZ
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '150 '
    - item_type: preproc_def
      name: MAX_PROCS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '20 '
    - item_type: preproc_def
      name: CHILD_LIFETIME
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '150 '
    - item_type: preproc_def
      name: TCP_MAX_QUERIES
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '100 '
    - item_type: preproc_def
      name: TCP_TIMEOUT
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '5 '
    - item_type: preproc_def
      name: TCP_BACKLOG
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '32  '
    - item_type: preproc_def
      name: EDNS_PKTSZ
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '1232 '
    - item_type: preproc_def
      name: KEYBLOCK_LEN
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '40 '
    - item_type: preproc_def
      name: DNSSEC_LIMIT_WORK
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '40 '
    - item_type: preproc_def
      name: DNSSEC_LIMIT_SIG_FAIL
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '20 '
    - item_type: preproc_def
      name: DNSSEC_LIMIT_CRYPTO
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '200 '
    - item_type: preproc_def
      name: DNSSEC_LIMIT_NSEC3_ITERS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '150 '
    - item_type: preproc_def
      name: DNSSEC_ASSUMED_DS_TTL
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '3600 '
    - item_type: preproc_def
      name: TIMEOUT
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '10     '
    - item_type: preproc_def
      name: SMALL_PORT_RANGE
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '30 '
    - item_type: preproc_def
      name: FORWARD_TEST
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '50 '
    - item_type: preproc_def
      name: FORWARD_TIME
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '20 '
    - item_type: preproc_def
      name: UDP_TEST_TIME
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '60 '
    - item_type: preproc_def
      name: SERVERS_LOGGED
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '30 '
    - item_type: preproc_def
      name: LOCALS_LOGGED
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '8 '
    - item_type: preproc_def
      name: LEASE_RETRY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '60 '
    - item_type: preproc_def
      name: CACHESIZ
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '150 '
    - item_type: preproc_def
      name: TTL_FLOOR_LIMIT
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '3600 '
    - item_type: preproc_def
      name: MAXLEASES
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '1000 '
    - item_type: preproc_def
      name: PING_WAIT
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '3 '
    - item_type: preproc_def
      name: PING_CACHE_TIME
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '30 '
    - item_type: preproc_def
      name: DECLINE_BACKOFF
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '600 '
    - item_type: preproc_def
      name: DHCP_PACKET_MAX
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '16384 '
    - item_type: preproc_def
      name: SMALLDNAME
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '50 '
    - item_type: preproc_def
      name: CNAME_CHAIN
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '10 '
    - item_type: preproc_def
      name: DNSSEC_MIN_TTL
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '60 '
    - item_type: preproc_def
      name: HOSTSFILE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/etc/hosts"'
    - item_type: preproc_def
      name: ETHERSFILE
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/etc/ethers"'
    - item_type: preproc_def
      name: DEFLEASE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '3600 '
    - item_type: preproc_def
      name: DEFLEASE6
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '(3600*24) '
    - item_type: preproc_def
      name: CHUSER
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"nobody"'
    - item_type: preproc_def
      name: CHGRP
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"dip"'
    - item_type: preproc_def
      name: TFTP_MAX_CONNECTIONS
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '50 '
    - item_type: preproc_def
      name: TFTP_MAX_WINDOW
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '32 '
    - item_type: preproc_def
      name: TFTP_TRANSFER_TIME
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '120 '
    - item_type: preproc_def
      name: LOG_MAX
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '5 '
    - item_type: preproc_def
      name: RANDFILE
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/dev/urandom"'
    - item_type: preproc_def
      name: DNSMASQ_SERVICE
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"uk.org.thekelleys.dnsmasq" '
    - item_type: preproc_def
      name: DNSMASQ_PATH
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/uk/org/thekelleys/dnsmasq"'
    - item_type: preproc_def
      name: DNSMASQ_UBUS_NAME
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"dnsmasq" '
    - item_type: preproc_def
      name: AUTH_TTL
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '600 '
    - item_type: preproc_def
      name: SOA_REFRESH
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '1200 '
    - item_type: preproc_def
      name: SOA_RETRY
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '180 '
    - item_type: preproc_def
      name: SOA_EXPIRY
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '1209600 '
    - item_type: preproc_def
      name: LOOP_TEST_DOMAIN
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"test" '
    - item_type: preproc_def
      name: LOOP_TEST_TYPE
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dnsmasq/src/config.h
      type_or_value: T_TXT
    - item_type: preproc_def
      name: DEFAULT_FAST_RETRY
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '1000 '
    - item_type: preproc_def
      name: STALE_CACHE_EXPIRY
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '86400 '
    - item_type: preproc_def
      name: HAVE_DHCP6
      pos:
        line_end: 185
        line_start: 183
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '#define HAVE_TFTP'
    - item_type: preproc_def
      name: HAVE_IPSET
      pos:
        line_end: 189
        line_start: 187
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '#define HAVE_LOOP'
    - item_type: preproc_def
      name: LEASEFILE
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/var/db/dnsmasq.leases"'
    - item_type: preproc_def
      name: LEASEFILE
      pos:
        line_end: 213
        line_start: 212
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/var/cache/dnsmasq.leases"'
    - item_type: preproc_def
      name: LEASEFILE
      pos:
        line_end: 215
        line_start: 214
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/data/misc/dhcp/dnsmasq.leases"'
    - item_type: preproc_def
      name: LEASEFILE
      pos:
        line_end: 217
        line_start: 216
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/var/lib/misc/dnsmasq.leases"'
    - item_type: preproc_def
      name: CONFFILE
      pos:
        line_end: 223
        line_start: 222
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/usr/local/etc/dnsmasq.conf"'
    - item_type: preproc_def
      name: CONFFILE
      pos:
        line_end: 225
        line_start: 224
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/etc/dnsmasq.conf"'
    - item_type: preproc_def
      name: RESOLVFILE
      pos:
        line_end: 231
        line_start: 230
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/etc/config/resolv.conf"'
    - item_type: preproc_def
      name: RESOLVFILE
      pos:
        line_end: 233
        line_start: 232
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/etc/resolv.conf"'
    - item_type: preproc_def
      name: RUNFILE
      pos:
        line_end: 239
        line_start: 238
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/data/dnsmasq.pid"'
    - item_type: preproc_def
      name: RUNFILE
      pos:
        line_end: 241
        line_start: 240
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '"/var/run/dnsmasq.pid"'
    - item_type: preproc_def
      name: IPV6_V6ONLY
      pos:
        line_end: 268
        line_start: 267
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '26'
    - item_type: preproc_def
      name: SOL_TCP
      pos:
        line_end: 300
        line_start: 299
        source_file: /src/dnsmasq/src/config.h
      type_or_value: IPPROTO_TCP
    - item_type: preproc_def
      name: ETHER_ADDR_LEN
      pos:
        line_end: 312
        line_start: 311
        source_file: /src/dnsmasq/src/config.h
      type_or_value: '6 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - send_from
  - set_outgoing_mark
  - log_query_mysockaddr
  - server_send
  - domain_no_rebind
  - forward_query
  - fast_retry
  - domain_find_sets
  - process_reply
  - dnssec_validate
  - pop_and_retry_query
  - reply_query
  - xor_array
  - flip_queryname
  - return_reply
  - is_query_allowed_for_mark
  - answer_disallowed
  - receive_query
  - if
  - tcp_talk
  - tcp_from_udp
  - tcp_key_recurse
  - tcp_request
  - random_sock
  - server_isequal
  - allocate_rfd
  - free_rfds
  - free_frec
  - get_new_frec
  - query_full
  - lookup_frec
  - resend_query
  - server_gone
  - get_id
  source_file: /src/dnsmasq/src/forward.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BITS_IN_INT
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/dnsmasq/src/forward.c
      type_or_value: (sizeof(unsigned int) * 8)
    structs: []
    typedefs: []
    union:
    - fields:
      - name: align
        type: struct cmsghdr
      - name: control6[CMSG_SPACE(sizeof(struct in6_pktinfo))]
        type: char
      item_type: union
      name: control_u
      pos:
        line_end: 45
        line_start: 37
        source_file: /src/dnsmasq/src/forward.c
    - fields:
      - name: align
        type: struct cmsghdr
      - name: control6[CMSG_SPACE(sizeof(struct in6_pktinfo))]
        type: char
      item_type: union
      name: control_u
      pos:
        line_end: 1605
        line_start: 1593
        source_file: /src/dnsmasq/src/forward.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 1718
        line_start: 1715
        source_file: /src/dnsmasq/src/forward.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*i'
        type: unsigned int
      - name: '*a'
        type: struct in_addr
      item_type: union
      name: p
      pos:
        line_end: 1735
        line_start: 1728
        source_file: /src/dnsmasq/src/forward.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in6_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 1757
        line_start: 1754
        source_file: /src/dnsmasq/src/forward.c
- function_names:
  - find_pseudoheader
  - add_pseudoheader
  - add_do_bit
  - char64
  - encoder
  - add_dns_client
  - add_mac
  - get_addrp
  - calc_subnet_opt
  - add_source_addr
  - check_source
  - add_umbrella_opt
  - add_edns0_config
  source_file: /src/dnsmasq/src/edns0.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UMBRELLA_VERSION
      pos:
        line_end: 484
        line_start: 483
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '1'
    - item_type: preproc_def
      name: UMBRELLA_TYPESZ
      pos:
        line_end: 485
        line_start: 484
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '2'
    - item_type: preproc_def
      name: UMBRELLA_ASSET
      pos:
        line_end: 487
        line_start: 486
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '0x0004'
    - item_type: preproc_def
      name: UMBRELLA_ASSETSZ
      pos:
        line_end: 488
        line_start: 487
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: sizeof(daemon->umbrella_asset)
    - item_type: preproc_def
      name: UMBRELLA_ORG
      pos:
        line_end: 489
        line_start: 488
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '0x0008'
    - item_type: preproc_def
      name: UMBRELLA_ORGSZ
      pos:
        line_end: 490
        line_start: 489
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: sizeof(daemon->umbrella_org)
    - item_type: preproc_def
      name: UMBRELLA_IPV4
      pos:
        line_end: 491
        line_start: 490
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '0x0010'
    - item_type: preproc_def
      name: UMBRELLA_IPV6
      pos:
        line_end: 492
        line_start: 491
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '0x0020'
    - item_type: preproc_def
      name: UMBRELLA_DEVICE
      pos:
        line_end: 493
        line_start: 492
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: '0x0040'
    - item_type: preproc_def
      name: UMBRELLA_DEVICESZ
      pos:
        line_end: 494
        line_start: 493
        source_file: /src/dnsmasq/src/edns0.c
      type_or_value: sizeof(daemon->umbrella_device)
    structs:
    - fields:
      - name: family
        type: u16
      - name: source_netmask
        type: u8
      - name: addr[IN6ADDRSZ]
        type: u8
      item_type: struct
      name: subnet_opt
      pos:
        line_end: 330
        line_start: 326
        source_file: /src/dnsmasq/src/edns0.c
    - fields:
      - name: ATTRIBUTE_NONSTRING
        type: u8
      - name: version
        type: u8
      - name: flags
        type: u8
      - name: fields[4 * UMBRELLA_TYPESZ + UMBRELLA_ORGSZ + IN6ADDRSZ + UMBRELLA_DEVICESZ
          + UMBRELLA_ASSETSZ]
        type: u8
      item_type: struct
      name: umbrella_opt
      pos:
        line_end: 505
        line_start: 495
        source_file: /src/dnsmasq/src/edns0.c
    typedefs: []
    union: []
- function_names:
  - dhcp6_init
  - dhcp6_packet
  - get_client_mac
  - complete_context6
  - config_find_by_address6
  - address6_allocate
  - address6_available
  - address6_valid
  - make_duid
  - make_duid1
  - construct_worker
  - dhcp_construct_contexts
  source_file: /src/dnsmasq/src/dhcp6.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*current'
        type: struct dhcp_context
      - name: fallback
        type: struct in6_addr
      - name: ind
        type: int
      item_type: struct
      name: iface_param
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/dnsmasq/src/dhcp6.c
    - fields:
      - name: now
        type: time_t
      - name: newone
        type: int
      item_type: struct
      name: cparam
      pos:
        line_end: 665
        line_start: 662
        source_file: /src/dnsmasq/src/dhcp6.c
    typedefs: []
    union:
    - fields:
      - name: align
        type: struct cmsghdr
      - name: control6[CMSG_SPACE(sizeof(struct in6_pktinfo))]
        type: char
      item_type: union
      name: control_u
      pos:
        line_end: 98
        line_start: 95
        source_file: /src/dnsmasq/src/dhcp6.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in6_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 126
        line_start: 123
        source_file: /src/dnsmasq/src/dhcp6.c
- function_names:
  - count_labels
  - serial_compare_32
  - setup_timestamp
  - is_check_date
  - get_rdata
  - sort_rrset
  - explore_rrset
  - dec_counter
  - validate_rrset
  - dnssec_validate_by_ds
  - dnssec_validate_ds
  - hostname_cmp
  - prove_non_existence_nsec
  - hash_name
  - base32_decode
  - check_nsec3_coverage
  - prove_non_existence_nsec3
  - prove_non_existence
  - zone_status
  - dnssec_validate_reply
  - dnskey_keytag
  - dnssec_generate_query
  - errflags_to_ede
  source_file: /src/dnsmasq/src/dnssec.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SERIAL_UNDEF
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: '-100'
    - item_type: preproc_def
      name: SERIAL_EQ
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: '0'
    - item_type: preproc_def
      name: SERIAL_LT
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: '-1'
    - item_type: preproc_def
      name: SERIAL_GT
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: '1'
    - item_type: preproc_def
      name: RRBUFLEN
      pos:
        line_end: 560
        line_start: 559
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: '128 '
    - item_type: preproc_def
      name: DNAME_OFFSET
      pos:
        line_end: 1299
        line_start: 1298
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: (T_DNAME >> 3)
    - item_type: preproc_def
      name: DNAME_MASK
      pos:
        line_end: 1300
        line_start: 1299
        source_file: /src/dnsmasq/src/dnssec.c
      type_or_value: (0x80 >> (T_DNAME & 0x07))
    structs:
    - fields:
      - name: '*desc'
        type: short
      - name: c
        type: size_t
      - name: '*end'
        type: unsigned char
      - name: '*buff'
        type: char
      item_type: struct
      name: rdata_state
      pos:
        line_end: 156
        line_start: 151
        source_file: /src/dnsmasq/src/dnssec.c
    typedefs: []
    union: []
- function_names:
  - IN6_IS_ADDR_ULA
  - IN6_IS_ADDR_ULA_ZERO
  - IN6_IS_ADDR_LINK_LOCAL_ZERO
  source_file: /src/dnsmasq/src/ip6addr.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nftset_init
  - add_to_nftset
  source_file: /src/dnsmasq/src/nftset.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - get_metric_name
  - clear_metrics
  source_file: /src/dnsmasq/src/metrics.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ra_init
  - ra_start_unsolicited
  - icmp6_packet
  - send_ra_alias
  - send_ra
  - add_prefixes
  - add_lla
  - periodic_ra
  - send_ra_to_aliases
  - iface_search
  - new_timeout
  - find_iface_param
  - calc_interval
  - calc_lifetime
  - calc_prio
  source_file: /src/dnsmasq/src/radv.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: now
        type: time_t
      - name: ind
        type: int
      - name: '*if_name'
        type: char
      - name: '*tags'
        type: struct dhcp_netid
      - name: link_local
        type: struct in6_addr
      - name: glob_pref_time
        type: unsigned int
      - name: '*found_context'
        type: struct dhcp_context
      item_type: struct
      name: ra_param
      pos:
        line_end: 36
        line_start: 28
        source_file: /src/dnsmasq/src/radv.c
    - fields:
      - name: now
        type: time_t
      - name: iface
        type: int
      - name: name[IF_NAMESIZE+1]
        type: char
      item_type: struct
      name: search_param
      pos:
        line_end: 41
        line_start: 38
        source_file: /src/dnsmasq/src/radv.c
    - fields:
      - name: iface
        type: int
      - name: '*bridge'
        type: struct dhcp_bridge
      - name: num_alias_ifs
        type: int
      - name: max_alias_ifs
        type: int
      - name: '*alias_ifs'
        type: int
      item_type: struct
      name: alias_param
      pos:
        line_end: 49
        line_start: 43
        source_file: /src/dnsmasq/src/radv.c
    typedefs: []
    union:
    - fields:
      - name: align
        type: struct cmsghdr
      - name: control6[CMSG_SPACE(sizeof(struct in6_pktinfo))]
        type: char
      item_type: union
      name: control_u
      pos:
        line_end: 150
        line_start: 147
        source_file: /src/dnsmasq/src/radv.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in6_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 175
        line_start: 172
        source_file: /src/dnsmasq/src/radv.c
- function_names:
  - check_name
  - C_IN::for
  - rrfilter
  - rrfilter_desc
  - expand_workspace
  - to_wire
  - from_wire
  source_file: /src/dnsmasq/src/rrfilter.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - tftp_request
  - check_tftp_fileperm
  - check_tftp_listeners
  - handle_tftp
  - free_transfer
  - next
  - sanitise
  - tftp_err
  - tftp_err_oops
  - get_block
  - do_tftp_script_run
  source_file: /src/dnsmasq/src/tftp.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OP_RRQ
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: OP_WRQ
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: OP_DATA
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '3'
    - item_type: preproc_def
      name: OP_ACK
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: OP_ERR
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: OP_OACK
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '6'
    - item_type: preproc_def
      name: ERR_NOTDEF
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: ERR_FNF
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: ERR_PERM
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '2'
    - item_type: preproc_def
      name: ERR_FULL
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '3'
    - item_type: preproc_def
      name: ERR_ILL
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '4'
    - item_type: preproc_def
      name: ERR_TID
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '5'
    - item_type: preproc_def
      name: MAXMESSAGE
      pos:
        line_end: 850
        line_start: 850
        source_file: /src/dnsmasq/src/tftp.c
      type_or_value: '500 '
    structs:
    - fields:
      - name: op
        type: unsigned short
      item_type: struct
      name: ack
      pos:
        line_end: 750
        line_start: 748
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: op
        type: unsigned short
      - name: message[]
        type: char
      item_type: struct
      name: errmess
      pos:
        line_end: 856
        line_start: 853
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: op
        type: unsigned short
      - name: data[]
        type: char
      item_type: struct
      name: oackmess
      pos:
        line_end: 900
        line_start: 897
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: op
        type: unsigned short
      - name: data[]
        type: unsigned char
      item_type: struct
      name: datamess
      pos:
        line_end: 933
        line_start: 930
        source_file: /src/dnsmasq/src/tftp.c
    typedefs: []
    union:
    - fields:
      - name: align
        type: struct cmsghdr
      - name: control6[CMSG_SPACE(sizeof(struct in6_pktinfo))]
        type: char
      item_type: union
      name: control_u
      pos:
        line_end: 79
        line_start: 67
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 139
        line_start: 136
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*a'
        type: struct in_addr
      - name: '*i'
        type: unsigned int
      item_type: union
      name: p
      pos:
        line_end: 153
        line_start: 149
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*a'
        type: struct in_addr
      - name: '*s'
        type: struct sockaddr_dl
      item_type: union
      name: p
      pos:
        line_end: 169
        line_start: 165
        source_file: /src/dnsmasq/src/tftp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in6_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 187
        line_start: 184
        source_file: /src/dnsmasq/src/tftp.c
- function_names:
  - SA_SIZE
  - arp_enumerate
  - iface_enumerate
  - init_bpf
  - send_via_bpf
  - route_init
  - route_sock
  source_file: /src/dnsmasq/src/bpf.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: uh_sport
        type: u16
      - name: uh_dport
        type: u16
      - name: uh_ulen
        type: u16
      - name: uh_sum
        type: u16
      item_type: struct
      name: udphdr
      pos:
        line_end: 278
        line_start: 273
        source_file: /src/dnsmasq/src/bpf.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dnsmasq/src/radv-protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALL_NODES
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '"FF02::1"'
    - item_type: preproc_def
      name: ALL_ROUTERS
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '"FF02::2"'
    - item_type: preproc_def
      name: ICMP6_OPT_SOURCE_MAC
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ICMP6_OPT_PREFIX
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: ICMP6_OPT_MTU
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: ICMP6_OPT_ADV_INTERVAL
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: ICMP6_OPT_RT_INFO
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '24'
    - item_type: preproc_def
      name: ICMP6_OPT_RDNSS
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '25'
    - item_type: preproc_def
      name: ICMP6_OPT_DNSSL
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/src/radv-protocol.h
      type_or_value: '31'
    structs:
    - fields:
      - name: type
        type: u8
      - name: checksum
        type: u16
      - name: identifier
        type: u16
      - name: sequence_no
        type: u16
      item_type: struct
      name: ping_packet
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/dnsmasq/src/radv-protocol.h
    - fields:
      - name: type
        type: u8
      - name: checksum
        type: u16
      - name: hop_limit
        type: u8
      - name: lifetime
        type: u16
      - name: reachable_time
        type: u32
      - name: retrans_time
        type: u32
      item_type: struct
      name: ra_packet
      pos:
        line_end: 33
        line_start: 26
        source_file: /src/dnsmasq/src/radv-protocol.h
    - fields:
      - name: type
        type: u8
      - name: checksum
        type: u16
      - name: reserved
        type: u16
      - name: target
        type: struct in6_addr
      item_type: struct
      name: neigh_packet
      pos:
        line_end: 40
        line_start: 35
        source_file: /src/dnsmasq/src/radv-protocol.h
    - fields:
      - name: type
        type: u8
      - name: valid_lifetime
        type: u32
      - name: prefix
        type: struct in6_addr
      item_type: struct
      name: prefix_opt
      pos:
        line_end: 46
        line_start: 42
        source_file: /src/dnsmasq/src/radv-protocol.h
    typedefs: []
    union: []
- function_names:
  - get_incoming_mark
  - callback
  source_file: /src/dnsmasq/src/conntrack.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LOG
  - ASSERT
  - is_string_matching_glob_pattern
  - is_valid_dns_name
  - is_valid_dns_name_pattern
  - is_dns_name_matching_pattern
  source_file: /src/dnsmasq/src/pattern.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - filter_mac
  - find_mac
  - do_arp_script_run
  source_file: /src/dnsmasq/src/arp.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INTERVAL
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dnsmasq/src/arp.c
      type_or_value: '90'
    - item_type: preproc_def
      name: ARP_MARK
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dnsmasq/src/arp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: ARP_FOUND
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dnsmasq/src/arp.c
      type_or_value: '1  '
    - item_type: preproc_def
      name: ARP_NEW
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/arp.c
      type_or_value: '2  '
    - item_type: preproc_def
      name: ARP_EMPTY
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dnsmasq/src/arp.c
      type_or_value: '3  '
    structs:
    - fields:
      - name: hwlen
        type: unsigned short
      - name: family
        type: int
      - name: hwaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: addr
        type: union all_addr
      - name: '*next'
        type: struct arp_record
      item_type: struct
      name: arp_record
      pos:
        line_end: 32
        line_start: 26
        source_file: /src/dnsmasq/src/arp.c
    typedefs: []
    union: []
- function_names:
  - read_leases
  - lease_init
  - lease_update_from_configs
  - ourprintf
  - lease_update_file
  - find_interface_v4
  - find_interface_v6
  - lease_ping_reply
  - lease_update_slaac
  - lease_find_interfaces
  - lease_make_duid
  - lease_update_dns
  - lease_prune
  - lease_find_by_client
  - lease_find_by_addr
  - lease6_find
  - lease6_reset
  - lease6_find_by_client
  - lease6_find_by_addr
  - lease6_find_by_plain_addr
  - lease_find_max_addr6
  - lease_find_max_addr
  - lease_allocate
  - lease4_allocate
  - lease6_allocate
  - lease_set_expires
  - lease_set_iaid
  - lease_set_hwaddr
  - kill_name
  - lease_calc_fqdns
  - lease_set_hostname
  - lease_set_interface
  - lease_set_agent_id
  - lease_set_vendorclass
  - rerun_scripts
  - do_script_run
  - lease_add_extradata
  source_file: /src/dnsmasq/src/lease.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - is_name_synthetic
  - is_rev_synth
  - match_domain
  - search_domain
  - get_domain
  - match_domain6
  - search_domain6
  - get_domain6
  source_file: /src/dnsmasq/src/domain.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - extract_name
  - in_arpa_name_2_addr
  - skip_name
  - skip_questions
  - skip_section
  - resize_packet
  - private_net
  - private_net6
  - do_doctor
  - find_soa
  - log_txt
  - extract_addresses
  - safe_name
  - report_addresses
  - extract_request
  - setup_reply
  - check_for_local_domain
  - check_bad_address
  - check_for_bogus_wildcard
  - check_for_ignored_address
  - add_resource_record
  - CHECK_LIMIT
  - crec_isstale
  - crec_ttl
  - cache_not_validated
  - answer_request
  source_file: /src/dnsmasq/src/rfc1035.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAXARPANAME
      pos:
        line_end: 194
        line_start: 193
        source_file: /src/dnsmasq/src/rfc1035.c
      type_or_value: '75'
    structs: []
    typedefs: []
    union: []
- function_names:
  - lua_open
  - create_helper
  - my_setenv
  - grab_extradata
  - grab_extradata_lua
  - buff_alloc
  - queue_script
  - queue_relay_snoop
  - queue_tftp
  - queue_arp
  - helper_buf_empty
  - helper_write
  source_file: /src/dnsmasq/src/helper.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: flags
        type: int
      - name: action
        type: int
      - name: clid_len
        type: int
      - name: addr
        type: struct in_addr
      - name: remaining_time
        type: unsigned int
      - name: addr6
        type: struct in6_addr
      - name: hwaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: interface[IF_NAMESIZE]
        type: char
      item_type: struct
      name: script_data
      pos:
        line_end: 73
        line_start: 51
        source_file: /src/dnsmasq/src/helper.c
    typedefs: []
    union: []
- function_names:
  - option_len
  - option_ptr
  - dhcp_reply
  - extended_hwaddr
  - calc_time
  - server_id
  - sanitise
  - add_extradata_opt
  - log_packet
  - log_options
  - option_find1
  - option_find
  - option_addr
  - option_uint
  - dhcp_skip_opts
  - find_overload
  - dhcp_packet_size
  - free_space
  - option_put
  - option_put_string
  - do_opt
  - in_list
  - option_find2
  - match_vendor_opts
  - do_encap_opts
  - pxe_misc
  - prune_vendor_opts
  - pxe_uefi_workaround
  - pxe_opts
  - clear_packet
  - find_boot
  - is_pxe_client
  - do_options
  - handle_encap
  - apply_delay
  source_file: /src/dnsmasq/src/rfc2131.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NUM_OPTS
      pos:
        line_end: 2428
        line_start: 2427
        source_file: /src/dnsmasq/src/rfc2131.c
      type_or_value: '4  '
    structs: []
    typedefs: []
    union: []
- function_names:
  - add_watch
  - remove_watch
  - dbus_read_servers
  - dbus_reply_server_loop
  - dbus_read_servers_ex
  - dbus_get_bool
  - dbus_set_bool
  - dbus_add_lease
  - dbus_del_lease
  - dbus_get_metrics
  - add_dict_entry
  - add_dict_int
  - dbus_get_server_metrics
  - message_handler
  - dbus_init
  - set_dbus_listeners
  - check_dbus_watches
  - check_dbus_listeners
  - emit_dbus_signal
  source_file: /src/dnsmasq/src/dbus.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*watch'
        type: DBusWatch
      - name: '*next'
        type: struct watch
      item_type: struct
      name: watch
      pos:
        line_end: 113
        line_start: 110
        source_file: /src/dnsmasq/src/dbus.c
    typedefs: []
    union: []
- function_names:
  - dhcp_init
  - dhcp_packet
  - check_listen_addrs
  - guess_range_netmask
  - complete_context
  - address_available
  - narrow_context
  - config_find_by_address
  - do_icmp_ping
  - address_allocate
  - dhcp_read_ethers
  - host_from_dns
  - relay_upstream4
  - relay_reply4
  source_file: /src/dnsmasq/src/dhcp.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*current'
        type: struct dhcp_context
      - name: ind
        type: int
      item_type: struct
      name: iface_param
      pos:
        line_end: 23
        line_start: 20
        source_file: /src/dnsmasq/src/dhcp.c
    - fields:
      - name: ind
        type: int
      - name: netmask
        type: struct in_addr
      item_type: struct
      name: match_param
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/dnsmasq/src/dhcp.c
    typedefs: []
    union:
    - fields:
      - name: align
        type: struct cmsghdr
      item_type: union
      name: control_u
      pos:
        line_end: 164
        line_start: 155
        source_file: /src/dnsmasq/src/dhcp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 193
        line_start: 190
        source_file: /src/dnsmasq/src/dhcp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*s'
        type: struct sockaddr_dl
      item_type: union
      name: p
      pos:
        line_end: 208
        line_start: 205
        source_file: /src/dnsmasq/src/dhcp.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*i'
        type: unsigned int
      item_type: union
      name: p
      pos:
        line_end: 221
        line_start: 218
        source_file: /src/dnsmasq/src/dhcp.c
- function_names:
  - rand_init
  - ROTATE
  - MUSH
  - surf
  - rand16
  - rand32
  - rand64
  - rr_on_list
  - check_name
  - legal_hostname
  - canonicalise
  - do_rfc1035_name
  - safe_malloc
  - safe_strncpy
  - safe_pipe
  - whine_malloc
  - whine_realloc
  - sockaddr_isequal
  - sockaddr_isnull
  - sa_len
  - hostname_order
  - hostname_isequal
  - hostname_issubdomain
  - dnsmasq_time
  - dnsmasq_milliseconds
  - netmask_length
  - is_same_net
  - is_same_net_prefix
  - is_same_net6
  - addr6part
  - setaddr6part
  - prettyprint_addr
  - prettyprint_time
  - parse_hex
  - memcmp_masked
  - expand_buf
  - print_mac
  - retry_send
  - read_write
  - close_fds
  - wildcard_match
  - wildcard_matchn
  - kernel_version
  source_file: /src/dnsmasq/src/util.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FDESCFS
      pos:
        line_end: 826
        line_start: 825
        source_file: /src/dnsmasq/src/util.c
      type_or_value: '"/proc/self/fd"'
    - item_type: preproc_def
      name: FDESCFS
      pos:
        line_end: 830
        line_start: 829
        source_file: /src/dnsmasq/src/util.c
      type_or_value: '"/dev/fd"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - IFA_RTA
  - NDA_RTA
  - netlink_init
  - netlink_recv
  - iface_enumerate
  - nl_multicast_state
  - netlink_multicast
  - nl_async
  source_file: /src/dnsmasq/src/netlink.c
  types:
    enum:
    - enumerators:
      - name: STATE_NEWADDR
        value: (1 << 0)
      - name: STATE_NEWROUTE
        value: (1 << 1)
      item_type: enum
      name: async_states
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/dnsmasq/src/netlink.c
    preproc_defs:
    - item_type: preproc_def
      name: SOL_NETLINK
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/netlink.c
      type_or_value: '270'
    - item_type: preproc_def
      name: NETLINK_NO_ENOBUFS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/netlink.c
      type_or_value: '5'
    structs:
    - fields:
      - name: nlh
        type: struct nlmsghdr
      - name: g
        type: struct rtgenmsg
      item_type: struct
      name: req
      pos:
        line_end: 165
        line_start: 162
        source_file: /src/dnsmasq/src/netlink.c
    typedefs: []
    union: []
- function_names:
  - end_opt6
  - reset_counter
  - save_counter
  - expand
  - new_opt6
  - put_opt6
  - put_opt6_long
  - put_opt6_short
  - put_opt6_char
  - put_opt6_string
  source_file: /src/dnsmasq/src/outpacket.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - OPCODE
  - SET_OPCODE
  - RCODE
  - SET_RCODE
  - GETSHORT
  - GETLONG
  - PUTSHORT
  - PUTLONG
  - CHECK_LEN
  - ADD_RDLEN
  source_file: /src/dnsmasq/src/dns-protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NAMESERVER_PORT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '53'
    - item_type: preproc_def
      name: TFTP_PORT
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '69'
    - item_type: preproc_def
      name: MIN_PORT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '1024           '
    - item_type: preproc_def
      name: MAX_PORT
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: 65535u
    - item_type: preproc_def
      name: IN6ADDRSZ
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '16'
    - item_type: preproc_def
      name: INADDRSZ
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: PACKETSZ
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "512\t\t"
    - item_type: preproc_def
      name: MAXDNAME
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "1025\t\t"
    - item_type: preproc_def
      name: RRFIXEDSZ
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "10\t\t"
    - item_type: preproc_def
      name: MAXLABEL
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '63              '
    - item_type: preproc_def
      name: NOERROR
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "0\t\t"
    - item_type: preproc_def
      name: FORMERR
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "1\t\t"
    - item_type: preproc_def
      name: SERVFAIL
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "2\t\t"
    - item_type: preproc_def
      name: NXDOMAIN
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "3\t\t"
    - item_type: preproc_def
      name: NOTIMP
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "4\t\t"
    - item_type: preproc_def
      name: REFUSED
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "5\t\t"
    - item_type: preproc_def
      name: QUERY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0               '
    - item_type: preproc_def
      name: C_IN
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '1               '
    - item_type: preproc_def
      name: C_CHAOS
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '3               '
    - item_type: preproc_def
      name: C_HESIOD
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '4               '
    - item_type: preproc_def
      name: C_ANY
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '255             '
    - item_type: preproc_def
      name: T_A
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: T_NS
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: T_MD
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: T_MF
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '4             '
    - item_type: preproc_def
      name: T_CNAME
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: T_SOA
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: T_MB
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: T_MG
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: T_MR
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: T_PTR
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: T_MINFO
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '14'
    - item_type: preproc_def
      name: T_MX
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '15'
    - item_type: preproc_def
      name: T_TXT
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '16'
    - item_type: preproc_def
      name: T_RP
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '17'
    - item_type: preproc_def
      name: T_AFSDB
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '18'
    - item_type: preproc_def
      name: T_RT
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '21'
    - item_type: preproc_def
      name: T_SIG
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '24'
    - item_type: preproc_def
      name: T_PX
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '26'
    - item_type: preproc_def
      name: T_AAAA
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '28'
    - item_type: preproc_def
      name: T_NXT
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '30'
    - item_type: preproc_def
      name: T_SRV
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '33'
    - item_type: preproc_def
      name: T_NAPTR
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '35'
    - item_type: preproc_def
      name: T_KX
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '36'
    - item_type: preproc_def
      name: T_DNAME
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '39'
    - item_type: preproc_def
      name: T_OPT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '41'
    - item_type: preproc_def
      name: T_DS
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '43'
    - item_type: preproc_def
      name: T_RRSIG
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '46'
    - item_type: preproc_def
      name: T_NSEC
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '47'
    - item_type: preproc_def
      name: T_DNSKEY
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '48'
    - item_type: preproc_def
      name: T_NSEC3
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '50'
    - item_type: preproc_def
      name: T_TKEY
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "249\t\t"
    - item_type: preproc_def
      name: T_TSIG
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '250'
    - item_type: preproc_def
      name: T_AXFR
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '252'
    - item_type: preproc_def
      name: T_MAILB
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: "253\t"
    - item_type: preproc_def
      name: T_ANY
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '255'
    - item_type: preproc_def
      name: T_CAA
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '257'
    - item_type: preproc_def
      name: EDNS0_OPTION_MAC
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '65001 '
    - item_type: preproc_def
      name: EDNS0_OPTION_CLIENT_SUBNET
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '8     '
    - item_type: preproc_def
      name: EDNS0_OPTION_EDE
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '15    '
    - item_type: preproc_def
      name: EDNS0_OPTION_NOMDEVICEID
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '65073 '
    - item_type: preproc_def
      name: EDNS0_OPTION_NOMCPEID
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '65074 '
    - item_type: preproc_def
      name: EDNS0_OPTION_UMBRELLA
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '20292 '
    - item_type: preproc_def
      name: EDE_UNSET
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '-1  '
    - item_type: preproc_def
      name: EDE_OTHER
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0  '
    - item_type: preproc_def
      name: EDE_USUPDNSKEY
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '1  '
    - item_type: preproc_def
      name: EDE_USUPDS
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '2  '
    - item_type: preproc_def
      name: EDE_STALE
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '3  '
    - item_type: preproc_def
      name: EDE_FORGED
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '4  '
    - item_type: preproc_def
      name: EDE_DNSSEC_IND
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '5  '
    - item_type: preproc_def
      name: EDE_DNSSEC_BOGUS
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '6  '
    - item_type: preproc_def
      name: EDE_SIG_EXP
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '7  '
    - item_type: preproc_def
      name: EDE_SIG_NYV
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '8  '
    - item_type: preproc_def
      name: EDE_NO_DNSKEY
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '9  '
    - item_type: preproc_def
      name: EDE_NO_RRSIG
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '10  '
    - item_type: preproc_def
      name: EDE_NO_ZONEKEY
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '11  '
    - item_type: preproc_def
      name: EDE_NO_NSEC
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '12  '
    - item_type: preproc_def
      name: EDE_CACHED_ERR
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '13  '
    - item_type: preproc_def
      name: EDE_NOT_READY
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '14  '
    - item_type: preproc_def
      name: EDE_BLOCKED
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '15  '
    - item_type: preproc_def
      name: EDE_CENSORED
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '16  '
    - item_type: preproc_def
      name: EDE_FILTERED
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '17  '
    - item_type: preproc_def
      name: EDE_PROHIBITED
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '18  '
    - item_type: preproc_def
      name: EDE_STALE_NXD
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '19  '
    - item_type: preproc_def
      name: EDE_NOT_AUTH
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '20  '
    - item_type: preproc_def
      name: EDE_NOT_SUP
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '21  '
    - item_type: preproc_def
      name: EDE_NO_AUTH
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '22  '
    - item_type: preproc_def
      name: EDE_NETERR
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '23  '
    - item_type: preproc_def
      name: EDE_INVALID_DATA
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '24  '
    - item_type: preproc_def
      name: EDE_SIG_E_B_V
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '25  '
    - item_type: preproc_def
      name: EDE_TOO_EARLY
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '26  '
    - item_type: preproc_def
      name: EDE_UNS_NS3_ITER
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '27  '
    - item_type: preproc_def
      name: EDE_UNABLE_POLICY
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '28  '
    - item_type: preproc_def
      name: EDE_SYNTHESIZED
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '29  '
    - item_type: preproc_def
      name: HB3_QR
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x80 '
    - item_type: preproc_def
      name: HB3_OPCODE
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x78'
    - item_type: preproc_def
      name: HB3_AA
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x04 '
    - item_type: preproc_def
      name: HB3_TC
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x02 '
    - item_type: preproc_def
      name: HB3_RD
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x01 '
    - item_type: preproc_def
      name: HB4_RA
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x80 '
    - item_type: preproc_def
      name: HB4_AD
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x20 '
    - item_type: preproc_def
      name: HB4_CD
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x10 '
    - item_type: preproc_def
      name: HB4_RCODE
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '0x0f'
    - item_type: preproc_def
      name: NAME_ESCAPE
      pos:
        line_end: 193
        line_start: 192
        source_file: /src/dnsmasq/src/dns-protocol.h
      type_or_value: '1'
    structs:
    - fields:
      - name: id
        type: u16
      - name: hb3
        type: u8
      - name: qdcount
        type: u16
      item_type: struct
      name: dns_header
      pos:
        line_end: 125
        line_start: 121
        source_file: /src/dnsmasq/src/dns-protocol.h
    typedefs: []
    union: []
- function_names:
  - my_readlink
  - inotify_dnsmasq_init
  - dyndir_addhosts
  - set_dynamic_inotify
  - inotify_check
  source_file: /src/dnsmasq/src/inotify.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INOTIFY_SZ
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/inotify.c
      type_or_value: (sizeof(struct inotify_event) + NAME_MAX + 1)
    structs: []
    typedefs: []
    union: []
- function_names:
  - lookup_domain
  - server_samegroup
  - filter_servers
  - is_local_answer
  - make_local_answer
  - dnssec_server
  - order
  - order_servers
  - order_qsort
  - mark_servers
  - cleanup_servers
  - add_update_server
  source_file: /src/dnsmasq/src/domain-match.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SERV_IS_LOCAL
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/domain-match.c
      type_or_value: (SERV_USE_RESOLV | SERV_LITERAL_ADDRESS)
    - item_type: preproc_def
      name: SERV_LOCAL_ADDRESS
      pos:
        line_end: 283
        line_start: 282
        source_file: /src/dnsmasq/src/domain-match.c
      type_or_value: (SERV_6ADDR | SERV_4ADDR | SERV_ALL_ZEROS)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dnsmasq/src/metrics.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - countof
  - MIN
  - gettext_noop
  - _
  - _
  - option_var
  - option_val
  - option_bool
  - STAT_ISEQUAL
  - have_config
  source_file: /src/dnsmasq/src/dnsmasq.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: COPYRIGHT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '"Copyright (c) 2000-2025 Simon Kelley"'
    - item_type: preproc_def
      name: _LARGEFILE_SOURCE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: _FILE_OFFSET_BITS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64'
    - item_type: preproc_def
      name: ATTRIBUTE_NORETURN
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: __attribute__ ((noreturn))
    - item_type: preproc_def
      name: ATTRIBUTE_NONSTRING
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: __attribute__ ((nonstring))
    - item_type: preproc_def
      name: ifr_mtu
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: ifr_ifru.ifru_metric
    - item_type: preproc_def
      name: LINUX_CAPABILITY_VERSION_1
      pos:
        line_end: 155
        line_start: 154
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x19980330'
    - item_type: preproc_def
      name: LINUX_CAPABILITY_VERSION_2
      pos:
        line_end: 156
        line_start: 155
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x20071026'
    - item_type: preproc_def
      name: LINUX_CAPABILITY_VERSION_3
      pos:
        line_end: 157
        line_start: 156
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x20080522'
    - item_type: preproc_def
      name: daemon
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: dnsmasq_daemon
    - item_type: preproc_def
      name: ADDRSTRLEN
      pos:
        line_end: 171
        line_start: 170
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: INET6_ADDRSTRLEN
    - item_type: preproc_def
      name: EVENT_RELOAD
      pos:
        line_end: 178
        line_start: 177
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EVENT_DUMP
      pos:
        line_end: 179
        line_start: 178
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EVENT_ALARM
      pos:
        line_end: 180
        line_start: 179
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EVENT_TERM
      pos:
        line_end: 181
        line_start: 180
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: EVENT_CHILD
      pos:
        line_end: 182
        line_start: 181
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: EVENT_REOPEN
      pos:
        line_end: 183
        line_start: 182
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '6'
    - item_type: preproc_def
      name: EVENT_EXITED
      pos:
        line_end: 184
        line_start: 183
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '7'
    - item_type: preproc_def
      name: EVENT_KILLED
      pos:
        line_end: 185
        line_start: 184
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: EVENT_EXEC_ERR
      pos:
        line_end: 186
        line_start: 185
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '9'
    - item_type: preproc_def
      name: EVENT_PIPE_ERR
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '10'
    - item_type: preproc_def
      name: EVENT_USER_ERR
      pos:
        line_end: 188
        line_start: 187
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '11'
    - item_type: preproc_def
      name: EVENT_CAP_ERR
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '12'
    - item_type: preproc_def
      name: EVENT_PIDFILE
      pos:
        line_end: 190
        line_start: 189
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '13'
    - item_type: preproc_def
      name: EVENT_HUSER_ERR
      pos:
        line_end: 191
        line_start: 190
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '14'
    - item_type: preproc_def
      name: EVENT_GROUP_ERR
      pos:
        line_end: 192
        line_start: 191
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '15'
    - item_type: preproc_def
      name: EVENT_DIE
      pos:
        line_end: 193
        line_start: 192
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: EVENT_LOG_ERR
      pos:
        line_end: 194
        line_start: 193
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '17'
    - item_type: preproc_def
      name: EVENT_FORK_ERR
      pos:
        line_end: 195
        line_start: 194
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '18'
    - item_type: preproc_def
      name: EVENT_LUA_ERR
      pos:
        line_end: 196
        line_start: 195
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '19'
    - item_type: preproc_def
      name: EVENT_TFTP_ERR
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '20'
    - item_type: preproc_def
      name: EVENT_INIT
      pos:
        line_end: 198
        line_start: 197
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '21'
    - item_type: preproc_def
      name: EVENT_NEWADDR
      pos:
        line_end: 199
        line_start: 198
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '22'
    - item_type: preproc_def
      name: EVENT_NEWROUTE
      pos:
        line_end: 200
        line_start: 199
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '23'
    - item_type: preproc_def
      name: EVENT_TIME_ERR
      pos:
        line_end: 201
        line_start: 200
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '24'
    - item_type: preproc_def
      name: EVENT_SCRIPT_LOG
      pos:
        line_end: 202
        line_start: 201
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '25'
    - item_type: preproc_def
      name: EVENT_TIME
      pos:
        line_end: 203
        line_start: 202
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '26'
    - item_type: preproc_def
      name: EC_GOOD
      pos:
        line_end: 206
        line_start: 205
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EC_BADCONF
      pos:
        line_end: 207
        line_start: 206
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EC_BADNET
      pos:
        line_end: 208
        line_start: 207
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EC_FILE
      pos:
        line_end: 209
        line_start: 208
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EC_NOMEM
      pos:
        line_end: 210
        line_start: 209
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: EC_MISC
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: EC_INIT_OFFSET
      pos:
        line_end: 212
        line_start: 211
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '10'
    - item_type: preproc_def
      name: OPT_BOGUSPRIV
      pos:
        line_end: 214
        line_start: 213
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: OPT_FILTER
      pos:
        line_end: 215
        line_start: 214
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: OPT_LOG
      pos:
        line_end: 216
        line_start: 215
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: OPT_SELFMX
      pos:
        line_end: 217
        line_start: 216
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: OPT_NO_HOSTS
      pos:
        line_end: 218
        line_start: 217
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: OPT_NO_POLL
      pos:
        line_end: 219
        line_start: 218
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: OPT_DEBUG
      pos:
        line_end: 220
        line_start: 219
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '6'
    - item_type: preproc_def
      name: OPT_ORDER
      pos:
        line_end: 221
        line_start: 220
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '7'
    - item_type: preproc_def
      name: OPT_NO_RESOLV
      pos:
        line_end: 222
        line_start: 221
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: OPT_EXPAND
      pos:
        line_end: 223
        line_start: 222
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '9'
    - item_type: preproc_def
      name: OPT_LOCALMX
      pos:
        line_end: 224
        line_start: 223
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '10'
    - item_type: preproc_def
      name: OPT_NO_NEG
      pos:
        line_end: 225
        line_start: 224
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '11'
    - item_type: preproc_def
      name: OPT_NODOTS_LOCAL
      pos:
        line_end: 226
        line_start: 225
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '12'
    - item_type: preproc_def
      name: OPT_NOWILD
      pos:
        line_end: 227
        line_start: 226
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '13'
    - item_type: preproc_def
      name: OPT_ETHERS
      pos:
        line_end: 228
        line_start: 227
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '14'
    - item_type: preproc_def
      name: OPT_RESOLV_DOMAIN
      pos:
        line_end: 229
        line_start: 228
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '15'
    - item_type: preproc_def
      name: OPT_NO_FORK
      pos:
        line_end: 230
        line_start: 229
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: OPT_AUTHORITATIVE
      pos:
        line_end: 231
        line_start: 230
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '17'
    - item_type: preproc_def
      name: OPT_LOCALISE
      pos:
        line_end: 232
        line_start: 231
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '18'
    - item_type: preproc_def
      name: OPT_DBUS
      pos:
        line_end: 233
        line_start: 232
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '19'
    - item_type: preproc_def
      name: OPT_DHCP_FQDN
      pos:
        line_end: 234
        line_start: 233
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '20'
    - item_type: preproc_def
      name: OPT_NO_PING
      pos:
        line_end: 235
        line_start: 234
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '21'
    - item_type: preproc_def
      name: OPT_LEASE_RO
      pos:
        line_end: 236
        line_start: 235
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '22'
    - item_type: preproc_def
      name: OPT_ALL_SERVERS
      pos:
        line_end: 237
        line_start: 236
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '23'
    - item_type: preproc_def
      name: OPT_RELOAD
      pos:
        line_end: 238
        line_start: 237
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '24'
    - item_type: preproc_def
      name: OPT_LOCAL_REBIND
      pos:
        line_end: 239
        line_start: 238
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '25  '
    - item_type: preproc_def
      name: OPT_TFTP_SECURE
      pos:
        line_end: 240
        line_start: 239
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '26'
    - item_type: preproc_def
      name: OPT_TFTP_NOBLOCK
      pos:
        line_end: 241
        line_start: 240
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '27'
    - item_type: preproc_def
      name: OPT_LOG_OPTS
      pos:
        line_end: 242
        line_start: 241
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '28'
    - item_type: preproc_def
      name: OPT_TFTP_APREF_IP
      pos:
        line_end: 243
        line_start: 242
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '29'
    - item_type: preproc_def
      name: OPT_NO_OVERRIDE
      pos:
        line_end: 244
        line_start: 243
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '30'
    - item_type: preproc_def
      name: OPT_NO_REBIND
      pos:
        line_end: 245
        line_start: 244
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '31'
    - item_type: preproc_def
      name: OPT_ADD_MAC
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: OPT_DNSSEC_PROXY
      pos:
        line_end: 247
        line_start: 246
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '33'
    - item_type: preproc_def
      name: OPT_CONSEC_ADDR
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '34'
    - item_type: preproc_def
      name: OPT_CONNTRACK
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '35'
    - item_type: preproc_def
      name: OPT_FQDN_UPDATE
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '36'
    - item_type: preproc_def
      name: OPT_RA
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '37'
    - item_type: preproc_def
      name: OPT_TFTP_LC
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '38'
    - item_type: preproc_def
      name: OPT_CLEVERBIND
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '39'
    - item_type: preproc_def
      name: OPT_TFTP
      pos:
        line_end: 254
        line_start: 253
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '40'
    - item_type: preproc_def
      name: OPT_CLIENT_SUBNET
      pos:
        line_end: 255
        line_start: 254
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '41'
    - item_type: preproc_def
      name: OPT_QUIET_DHCP
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '42'
    - item_type: preproc_def
      name: OPT_QUIET_DHCP6
      pos:
        line_end: 257
        line_start: 256
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '43'
    - item_type: preproc_def
      name: OPT_QUIET_RA
      pos:
        line_end: 258
        line_start: 257
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '44'
    - item_type: preproc_def
      name: OPT_DNSSEC_VALID
      pos:
        line_end: 259
        line_start: 258
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '45'
    - item_type: preproc_def
      name: OPT_DNSSEC_TIME
      pos:
        line_end: 260
        line_start: 259
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '46'
    - item_type: preproc_def
      name: OPT_DNSSEC_DEBUG
      pos:
        line_end: 261
        line_start: 260
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '47'
    - item_type: preproc_def
      name: OPT_DNSSEC_IGN_NS
      pos:
        line_end: 262
        line_start: 261
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '48 '
    - item_type: preproc_def
      name: OPT_LOCAL_SERVICE
      pos:
        line_end: 263
        line_start: 262
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '49'
    - item_type: preproc_def
      name: OPT_LOOP_DETECT
      pos:
        line_end: 264
        line_start: 263
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '50'
    - item_type: preproc_def
      name: OPT_EXTRALOG
      pos:
        line_end: 265
        line_start: 264
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '51'
    - item_type: preproc_def
      name: OPT_TFTP_NO_FAIL
      pos:
        line_end: 266
        line_start: 265
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '52'
    - item_type: preproc_def
      name: OPT_SCRIPT_ARP
      pos:
        line_end: 267
        line_start: 266
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '53'
    - item_type: preproc_def
      name: OPT_MAC_B64
      pos:
        line_end: 268
        line_start: 267
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '54'
    - item_type: preproc_def
      name: OPT_MAC_HEX
      pos:
        line_end: 269
        line_start: 268
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '55'
    - item_type: preproc_def
      name: OPT_TFTP_APREF_MAC
      pos:
        line_end: 270
        line_start: 269
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '56'
    - item_type: preproc_def
      name: OPT_RAPID_COMMIT
      pos:
        line_end: 271
        line_start: 270
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '57'
    - item_type: preproc_def
      name: OPT_UBUS
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '58'
    - item_type: preproc_def
      name: OPT_IGNORE_CLID
      pos:
        line_end: 273
        line_start: 272
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '59'
    - item_type: preproc_def
      name: OPT_SINGLE_PORT
      pos:
        line_end: 274
        line_start: 273
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '60'
    - item_type: preproc_def
      name: OPT_LEASE_RENEW
      pos:
        line_end: 275
        line_start: 274
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '61'
    - item_type: preproc_def
      name: OPT_LOG_DEBUG
      pos:
        line_end: 276
        line_start: 275
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '62'
    - item_type: preproc_def
      name: OPT_UMBRELLA
      pos:
        line_end: 277
        line_start: 276
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '63'
    - item_type: preproc_def
      name: OPT_UMBRELLA_DEVID
      pos:
        line_end: 278
        line_start: 277
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64'
    - item_type: preproc_def
      name: OPT_CMARK_ALST_EN
      pos:
        line_end: 279
        line_start: 278
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '65'
    - item_type: preproc_def
      name: OPT_QUIET_TFTP
      pos:
        line_end: 280
        line_start: 279
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '66'
    - item_type: preproc_def
      name: OPT_STRIP_ECS
      pos:
        line_end: 281
        line_start: 280
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '67'
    - item_type: preproc_def
      name: OPT_STRIP_MAC
      pos:
        line_end: 282
        line_start: 281
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '68'
    - item_type: preproc_def
      name: OPT_NORR
      pos:
        line_end: 283
        line_start: 282
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '69'
    - item_type: preproc_def
      name: OPT_NO_IDENT
      pos:
        line_end: 284
        line_start: 283
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '70'
    - item_type: preproc_def
      name: OPT_CACHE_RR
      pos:
        line_end: 285
        line_start: 284
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '71'
    - item_type: preproc_def
      name: OPT_LOCALHOST_SERVICE
      pos:
        line_end: 286
        line_start: 285
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '72'
    - item_type: preproc_def
      name: OPT_LOG_PROTO
      pos:
        line_end: 287
        line_start: 286
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '73'
    - item_type: preproc_def
      name: OPT_NO_0x20
      pos:
        line_end: 288
        line_start: 287
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '74'
    - item_type: preproc_def
      name: OPT_DO_0x20
      pos:
        line_end: 289
        line_start: 288
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '75'
    - item_type: preproc_def
      name: OPT_AUTH_LOG
      pos:
        line_end: 290
        line_start: 289
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '76'
    - item_type: preproc_def
      name: OPT_LEASEQUERY
      pos:
        line_end: 291
        line_start: 290
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '77'
    - item_type: preproc_def
      name: OPT_LAST
      pos:
        line_end: 292
        line_start: 291
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '78'
    - item_type: preproc_def
      name: OPTION_BITS
      pos:
        line_end: 294
        line_start: 293
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (sizeof(unsigned int)*8)
    - item_type: preproc_def
      name: OPTION_SIZE
      pos:
        line_end: 295
        line_start: 294
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: ( (OPT_LAST/OPTION_BITS)+((OPT_LAST%OPTION_BITS)!=0) )
    - item_type: preproc_def
      name: MS_TFTP
      pos:
        line_end: 303
        line_start: 302
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: LOG_USER
    - item_type: preproc_def
      name: MS_DHCP
      pos:
        line_end: 304
        line_start: 303
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: LOG_DAEMON
    - item_type: preproc_def
      name: MS_SCRIPT
      pos:
        line_end: 305
        line_start: 304
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: LOG_MAIL
    - item_type: preproc_def
      name: MS_DEBUG
      pos:
        line_end: 306
        line_start: 305
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: LOG_NEWS
    - item_type: preproc_def
      name: RR_IMDATALEN
      pos:
        line_end: 356
        line_start: 355
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (sizeof(union all_addr) - offsetof(struct datablock, data))
    - item_type: preproc_def
      name: TXT_STAT_CACHESIZE
      pos:
        line_end: 384
        line_start: 383
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: TXT_STAT_INSERTS
      pos:
        line_end: 385
        line_start: 384
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: TXT_STAT_EVICTIONS
      pos:
        line_end: 386
        line_start: 385
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: TXT_STAT_MISSES
      pos:
        line_end: 387
        line_start: 386
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: TXT_STAT_HITS
      pos:
        line_end: 388
        line_start: 387
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: TXT_STAT_AUTH
      pos:
        line_end: 389
        line_start: 388
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '6'
    - item_type: preproc_def
      name: TXT_STAT_SERVERS
      pos:
        line_end: 390
        line_start: 389
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '7'
    - item_type: preproc_def
      name: ADDRLIST_LITERAL
      pos:
        line_end: 418
        line_start: 417
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ADDRLIST_IPV6
      pos:
        line_end: 419
        line_start: 418
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: ADDRLIST_REVONLY
      pos:
        line_end: 420
        line_start: 419
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: ADDRLIST_PREFIX
      pos:
        line_end: 421
        line_start: 420
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: ADDRLIST_WILDCARD
      pos:
        line_end: 422
        line_start: 421
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: ADDRLIST_DECLINED
      pos:
        line_end: 423
        line_start: 422
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: AUTH6
      pos:
        line_end: 432
        line_start: 431
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: AUTH4
      pos:
        line_end: 433
        line_start: 432
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: HR_6
      pos:
        line_end: 447
        line_start: 446
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: HR_4
      pos:
        line_end: 448
        line_start: 447
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: IN4
      pos:
        line_end: 461
        line_start: 460
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: IN6
      pos:
        line_end: 462
        line_start: 461
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: INP4
      pos:
        line_end: 463
        line_start: 462
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: INP6
      pos:
        line_end: 464
        line_start: 463
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: RW_WRITE
      pos:
        line_end: 466
        line_start: 465
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: RW_READ
      pos:
        line_end: 467
        line_start: 466
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: RW_WRITE_ONCE
      pos:
        line_end: 468
        line_start: 467
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: RW_READ_ONCE
      pos:
        line_end: 469
        line_start: 468
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: SIZEOF_BARE_CREC
      pos:
        line_end: 505
        line_start: 504
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (sizeof(struct crec) - SMALLDNAME)
    - item_type: preproc_def
      name: SIZEOF_POINTER_CREC
      pos:
        line_end: 506
        line_start: 505
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (sizeof(struct crec) + sizeof(char *) - SMALLDNAME)
    - item_type: preproc_def
      name: F_IMMORTAL
      pos:
        line_end: 508
        line_start: 507
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<0)
    - item_type: preproc_def
      name: F_NAMEP
      pos:
        line_end: 509
        line_start: 508
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<1)
    - item_type: preproc_def
      name: F_REVERSE
      pos:
        line_end: 510
        line_start: 509
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<2)
    - item_type: preproc_def
      name: F_FORWARD
      pos:
        line_end: 511
        line_start: 510
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<3)
    - item_type: preproc_def
      name: F_DHCP
      pos:
        line_end: 512
        line_start: 511
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<4)
    - item_type: preproc_def
      name: F_NEG
      pos:
        line_end: 513
        line_start: 512
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '(1u<<5)       '
    - item_type: preproc_def
      name: F_HOSTS
      pos:
        line_end: 514
        line_start: 513
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<6)
    - item_type: preproc_def
      name: F_IPV4
      pos:
        line_end: 515
        line_start: 514
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<7)
    - item_type: preproc_def
      name: F_IPV6
      pos:
        line_end: 516
        line_start: 515
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<8)
    - item_type: preproc_def
      name: F_BIGNAME
      pos:
        line_end: 517
        line_start: 516
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<9)
    - item_type: preproc_def
      name: F_NXDOMAIN
      pos:
        line_end: 518
        line_start: 517
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<10)
    - item_type: preproc_def
      name: F_CNAME
      pos:
        line_end: 519
        line_start: 518
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<11)
    - item_type: preproc_def
      name: F_DNSKEY
      pos:
        line_end: 520
        line_start: 519
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<12)
    - item_type: preproc_def
      name: F_CONFIG
      pos:
        line_end: 521
        line_start: 520
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<13)
    - item_type: preproc_def
      name: F_DS
      pos:
        line_end: 522
        line_start: 521
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<14)
    - item_type: preproc_def
      name: F_DNSSECOK
      pos:
        line_end: 523
        line_start: 522
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<15)
    - item_type: preproc_def
      name: F_UPSTREAM
      pos:
        line_end: 524
        line_start: 523
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<16)
    - item_type: preproc_def
      name: F_RRNAME
      pos:
        line_end: 525
        line_start: 524
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<17)
    - item_type: preproc_def
      name: F_SERVER
      pos:
        line_end: 526
        line_start: 525
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<18)
    - item_type: preproc_def
      name: F_QUERY
      pos:
        line_end: 527
        line_start: 526
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<19)
    - item_type: preproc_def
      name: F_NOERR
      pos:
        line_end: 528
        line_start: 527
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<20)
    - item_type: preproc_def
      name: F_AUTH
      pos:
        line_end: 529
        line_start: 528
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<21)
    - item_type: preproc_def
      name: F_DNSSEC
      pos:
        line_end: 530
        line_start: 529
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<22)
    - item_type: preproc_def
      name: F_KEYTAG
      pos:
        line_end: 531
        line_start: 530
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<23)
    - item_type: preproc_def
      name: F_SECSTAT
      pos:
        line_end: 532
        line_start: 531
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<24)
    - item_type: preproc_def
      name: F_NO_RR
      pos:
        line_end: 533
        line_start: 532
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<25)
    - item_type: preproc_def
      name: F_IPSET
      pos:
        line_end: 534
        line_start: 533
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<26)
    - item_type: preproc_def
      name: F_NOEXTRA
      pos:
        line_end: 535
        line_start: 534
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<27)
    - item_type: preproc_def
      name: F_DOMAINSRV
      pos:
        line_end: 536
        line_start: 535
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<28)
    - item_type: preproc_def
      name: F_RCODE
      pos:
        line_end: 537
        line_start: 536
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<29)
    - item_type: preproc_def
      name: F_RR
      pos:
        line_end: 538
        line_start: 537
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<30)
    - item_type: preproc_def
      name: F_STALE
      pos:
        line_end: 539
        line_start: 538
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<31)
    - item_type: preproc_def
      name: UID_NONE
      pos:
        line_end: 541
        line_start: 540
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: SRC_CONFIG
      pos:
        line_end: 543
        line_start: 542
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SRC_HOSTS
      pos:
        line_end: 544
        line_start: 543
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: SRC_AH
      pos:
        line_end: 545
        line_start: 544
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: PIPE_OP_INSERT
      pos:
        line_end: 547
        line_start: 546
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1  '
    - item_type: preproc_def
      name: PIPE_OP_RESULT
      pos:
        line_end: 548
        line_start: 547
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2  '
    - item_type: preproc_def
      name: PIPE_OP_STATS
      pos:
        line_end: 549
        line_start: 548
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3  '
    - item_type: preproc_def
      name: PIPE_OP_IPSET
      pos:
        line_end: 550
        line_start: 549
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4  '
    - item_type: preproc_def
      name: PIPE_OP_NFTSET
      pos:
        line_end: 551
        line_start: 550
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5  '
    - item_type: preproc_def
      name: IFACE_TENTATIVE
      pos:
        line_end: 563
        line_start: 562
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: IFACE_DEPRECATED
      pos:
        line_end: 564
        line_start: 563
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: IFACE_PERMANENT
      pos:
        line_end: 565
        line_start: 564
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: SERV_USE_RESOLV
      pos:
        line_end: 570
        line_start: 569
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1  '
    - item_type: preproc_def
      name: SERV_LITERAL_ADDRESS
      pos:
        line_end: 571
        line_start: 570
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2  '
    - item_type: preproc_def
      name: SERV_ALL_ZEROS
      pos:
        line_end: 572
        line_start: 571
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4  '
    - item_type: preproc_def
      name: SERV_4ADDR
      pos:
        line_end: 573
        line_start: 572
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8  '
    - item_type: preproc_def
      name: SERV_6ADDR
      pos:
        line_end: 574
        line_start: 573
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16  '
    - item_type: preproc_def
      name: SERV_HAS_SOURCE
      pos:
        line_end: 575
        line_start: 574
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32  '
    - item_type: preproc_def
      name: SERV_FOR_NODOTS
      pos:
        line_end: 576
        line_start: 575
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64  '
    - item_type: preproc_def
      name: SERV_WARNED_RECURSIVE
      pos:
        line_end: 577
        line_start: 576
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '128  '
    - item_type: preproc_def
      name: SERV_FROM_DBUS
      pos:
        line_end: 578
        line_start: 577
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '256  '
    - item_type: preproc_def
      name: SERV_MARK
      pos:
        line_end: 579
        line_start: 578
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '512  '
    - item_type: preproc_def
      name: SERV_WILDCARD
      pos:
        line_end: 579
        line_start: 579
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1024  '
    - item_type: preproc_def
      name: SERV_FROM_RESOLV
      pos:
        line_end: 581
        line_start: 580
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2048  '
    - item_type: preproc_def
      name: SERV_FROM_FILE
      pos:
        line_end: 582
        line_start: 581
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4096  '
    - item_type: preproc_def
      name: SERV_LOOP
      pos:
        line_end: 583
        line_start: 582
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8192  '
    - item_type: preproc_def
      name: SERV_DO_DNSSEC
      pos:
        line_end: 584
        line_start: 583
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16384  '
    - item_type: preproc_def
      name: SERV_GOT_TCP
      pos:
        line_end: 585
        line_start: 584
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32768  '
    - item_type: preproc_def
      name: INAME_USED
      pos:
        line_end: 689
        line_start: 688
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: INAME_4
      pos:
        line_end: 690
        line_start: 689
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: INAME_6
      pos:
        line_end: 691
        line_start: 690
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: AH_DIR
      pos:
        line_end: 719
        line_start: 718
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: AH_INACTIVE
      pos:
        line_end: 720
        line_start: 719
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: AH_WD_DONE
      pos:
        line_end: 721
        line_start: 720
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: AH_HOSTS
      pos:
        line_end: 722
        line_start: 721
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: AH_DHCP_HST
      pos:
        line_end: 723
        line_start: 722
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: AH_DHCP_OPT
      pos:
        line_end: 724
        line_start: 723
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: DUMP_QUERY
      pos:
        line_end: 743
        line_start: 742
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: DUMP_REPLY
      pos:
        line_end: 744
        line_start: 743
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0002'
    - item_type: preproc_def
      name: DUMP_UP_QUERY
      pos:
        line_end: 745
        line_start: 744
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0004 '
    - item_type: preproc_def
      name: DUMP_UP_REPLY
      pos:
        line_end: 746
        line_start: 745
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0008'
    - item_type: preproc_def
      name: DUMP_SEC_QUERY
      pos:
        line_end: 747
        line_start: 746
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0010'
    - item_type: preproc_def
      name: DUMP_SEC_REPLY
      pos:
        line_end: 748
        line_start: 747
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0020'
    - item_type: preproc_def
      name: DUMP_BOGUS
      pos:
        line_end: 749
        line_start: 748
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0040 '
    - item_type: preproc_def
      name: DUMP_SEC_BOGUS
      pos:
        line_end: 750
        line_start: 749
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0080'
    - item_type: preproc_def
      name: DUMP_DHCP
      pos:
        line_end: 751
        line_start: 750
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x1000'
    - item_type: preproc_def
      name: DUMP_DHCPV6
      pos:
        line_end: 752
        line_start: 751
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x2000'
    - item_type: preproc_def
      name: DUMP_RA
      pos:
        line_end: 753
        line_start: 752
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: DUMP_TFTP
      pos:
        line_end: 754
        line_start: 753
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: STAT_SECURE
      pos:
        line_end: 757
        line_start: 756
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x10000'
    - item_type: preproc_def
      name: STAT_INSECURE
      pos:
        line_end: 758
        line_start: 757
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x20000'
    - item_type: preproc_def
      name: STAT_BOGUS
      pos:
        line_end: 759
        line_start: 758
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x30000'
    - item_type: preproc_def
      name: STAT_NEED_DS
      pos:
        line_end: 760
        line_start: 759
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x40000'
    - item_type: preproc_def
      name: STAT_NEED_KEY
      pos:
        line_end: 761
        line_start: 760
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x50000'
    - item_type: preproc_def
      name: STAT_TRUNCATED
      pos:
        line_end: 762
        line_start: 761
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x60000'
    - item_type: preproc_def
      name: STAT_SECURE_WILDCARD
      pos:
        line_end: 763
        line_start: 762
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x70000'
    - item_type: preproc_def
      name: STAT_OK
      pos:
        line_end: 764
        line_start: 763
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x80000'
    - item_type: preproc_def
      name: STAT_ABANDONED
      pos:
        line_end: 765
        line_start: 764
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x90000'
    - item_type: preproc_def
      name: STAT_ASYNC
      pos:
        line_end: 766
        line_start: 765
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0xa0000'
    - item_type: preproc_def
      name: DNSSEC_FAIL_NYV
      pos:
        line_end: 768
        line_start: 767
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0001 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_EXP
      pos:
        line_end: 769
        line_start: 768
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0002 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_INDET
      pos:
        line_end: 770
        line_start: 769
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0004 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NOKEYSUP
      pos:
        line_end: 771
        line_start: 770
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0008 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NOSIG
      pos:
        line_end: 772
        line_start: 771
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0010 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NOZONE
      pos:
        line_end: 773
        line_start: 772
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0020 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NONSEC
      pos:
        line_end: 774
        line_start: 773
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0040 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NODSSUP
      pos:
        line_end: 775
        line_start: 774
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0080 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NOKEY
      pos:
        line_end: 776
        line_start: 775
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0100 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_NSEC3_ITERS
      pos:
        line_end: 777
        line_start: 776
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0200 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_BADPACKET
      pos:
        line_end: 778
        line_start: 777
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0400 '
    - item_type: preproc_def
      name: DNSSEC_FAIL_WORK
      pos:
        line_end: 779
        line_start: 778
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0800 '
    - item_type: preproc_def
      name: FREC_NOREBIND
      pos:
        line_end: 783
        line_start: 782
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FREC_CHECKING_DISABLED
      pos:
        line_end: 784
        line_start: 783
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: FREC_NO_CACHE
      pos:
        line_end: 785
        line_start: 784
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: FREC_DNSKEY_QUERY
      pos:
        line_end: 786
        line_start: 785
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: FREC_DS_QUERY
      pos:
        line_end: 787
        line_start: 786
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: FREC_AD_QUESTION
      pos:
        line_end: 788
        line_start: 787
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: FREC_DO_QUESTION
      pos:
        line_end: 789
        line_start: 788
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64'
    - item_type: preproc_def
      name: FREC_HAS_PHEADER
      pos:
        line_end: 790
        line_start: 789
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '128'
    - item_type: preproc_def
      name: FREC_GONE_TO_TCP
      pos:
        line_end: 791
        line_start: 790
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '256'
    - item_type: preproc_def
      name: FREC_ANSWER
      pos:
        line_end: 792
        line_start: 791
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '512'
    - item_type: preproc_def
      name: OT_ADDR_LIST
      pos:
        line_end: 822
        line_start: 821
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: OT_RFC1035_NAME
      pos:
        line_end: 823
        line_start: 822
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: OT_INTERNAL
      pos:
        line_end: 824
        line_start: 823
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x2000'
    - item_type: preproc_def
      name: OT_NAME
      pos:
        line_end: 825
        line_start: 824
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x1000'
    - item_type: preproc_def
      name: OT_CSTRING
      pos:
        line_end: 826
        line_start: 825
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0800'
    - item_type: preproc_def
      name: OT_DEC
      pos:
        line_end: 827
        line_start: 826
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0400 '
    - item_type: preproc_def
      name: OT_TIME
      pos:
        line_end: 828
        line_start: 827
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0x0200'
    - item_type: preproc_def
      name: ACTION_DEL
      pos:
        line_end: 831
        line_start: 830
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ACTION_OLD_HOSTNAME
      pos:
        line_end: 832
        line_start: 831
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: ACTION_OLD
      pos:
        line_end: 833
        line_start: 832
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: ACTION_ADD
      pos:
        line_end: 834
        line_start: 833
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: ACTION_TFTP
      pos:
        line_end: 835
        line_start: 834
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: ACTION_ARP
      pos:
        line_end: 836
        line_start: 835
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '6'
    - item_type: preproc_def
      name: ACTION_ARP_DEL
      pos:
        line_end: 837
        line_start: 836
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '7'
    - item_type: preproc_def
      name: ACTION_RELAY_SNOOP
      pos:
        line_end: 838
        line_start: 837
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: LEASE_NEW
      pos:
        line_end: 840
        line_start: 839
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1  '
    - item_type: preproc_def
      name: LEASE_CHANGED
      pos:
        line_end: 841
        line_start: 840
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2  '
    - item_type: preproc_def
      name: LEASE_AUX_CHANGED
      pos:
        line_end: 842
        line_start: 841
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4  '
    - item_type: preproc_def
      name: LEASE_AUTH_NAME
      pos:
        line_end: 843
        line_start: 842
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8  '
    - item_type: preproc_def
      name: LEASE_USED
      pos:
        line_end: 844
        line_start: 843
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16  '
    - item_type: preproc_def
      name: LEASE_NA
      pos:
        line_end: 845
        line_start: 844
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32  '
    - item_type: preproc_def
      name: LEASE_TA
      pos:
        line_end: 846
        line_start: 845
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64  '
    - item_type: preproc_def
      name: LEASE_HAVE_HWADDR
      pos:
        line_end: 847
        line_start: 846
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '128  '
    - item_type: preproc_def
      name: LEASE_EXP_CHANGED
      pos:
        line_end: 848
        line_start: 847
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '256  '
    - item_type: preproc_def
      name: LIMIT_SIG_FAIL
      pos:
        line_end: 850
        line_start: 849
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LIMIT_CRYPTO
      pos:
        line_end: 851
        line_start: 850
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: LIMIT_WORK
      pos:
        line_end: 852
        line_start: 851
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: LIMIT_NSEC3_ITERS
      pos:
        line_end: 853
        line_start: 852
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: LIMIT_MAX
      pos:
        line_end: 854
        line_start: 853
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: CONFIG_DISABLE
      pos:
        line_end: 938
        line_start: 937
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CONFIG_CLID
      pos:
        line_end: 939
        line_start: 938
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: CONFIG_TIME
      pos:
        line_end: 940
        line_start: 939
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: CONFIG_NAME
      pos:
        line_end: 941
        line_start: 940
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: CONFIG_ADDR
      pos:
        line_end: 942
        line_start: 941
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: CONFIG_NOCLID
      pos:
        line_end: 943
        line_start: 942
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '128'
    - item_type: preproc_def
      name: CONFIG_FROM_ETHERS
      pos:
        line_end: 944
        line_start: 943
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '256    '
    - item_type: preproc_def
      name: CONFIG_ADDR_HOSTS
      pos:
        line_end: 945
        line_start: 944
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '512    '
    - item_type: preproc_def
      name: CONFIG_DECLINED
      pos:
        line_end: 946
        line_start: 945
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1024    '
    - item_type: preproc_def
      name: CONFIG_BANK
      pos:
        line_end: 947
        line_start: 946
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2048    '
    - item_type: preproc_def
      name: CONFIG_ADDR6
      pos:
        line_end: 948
        line_start: 947
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: CONFIG_ADDR6_HOSTS
      pos:
        line_end: 949
        line_start: 948
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16384    '
    - item_type: preproc_def
      name: DHOPT_ADDR
      pos:
        line_end: 963
        line_start: 962
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DHOPT_STRING
      pos:
        line_end: 964
        line_start: 963
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: DHOPT_ENCAPSULATE
      pos:
        line_end: 965
        line_start: 964
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: DHOPT_ENCAP_MATCH
      pos:
        line_end: 966
        line_start: 965
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8'
    - item_type: preproc_def
      name: DHOPT_FORCE
      pos:
        line_end: 967
        line_start: 966
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16'
    - item_type: preproc_def
      name: DHOPT_BANK
      pos:
        line_end: 968
        line_start: 967
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32'
    - item_type: preproc_def
      name: DHOPT_ENCAP_DONE
      pos:
        line_end: 969
        line_start: 968
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '64'
    - item_type: preproc_def
      name: DHOPT_MATCH
      pos:
        line_end: 970
        line_start: 969
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '128'
    - item_type: preproc_def
      name: DHOPT_VENDOR
      pos:
        line_end: 971
        line_start: 970
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '256'
    - item_type: preproc_def
      name: DHOPT_HEX
      pos:
        line_end: 972
        line_start: 971
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '512'
    - item_type: preproc_def
      name: DHOPT_VENDOR_MATCH
      pos:
        line_end: 973
        line_start: 972
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1024'
    - item_type: preproc_def
      name: DHOPT_RFC3925
      pos:
        line_end: 974
        line_start: 973
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2048'
    - item_type: preproc_def
      name: DHOPT_TAGOK
      pos:
        line_end: 975
        line_start: 974
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: DHOPT_ADDR6
      pos:
        line_end: 976
        line_start: 975
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '8192'
    - item_type: preproc_def
      name: DHOPT_VENDOR_PXE
      pos:
        line_end: 977
        line_start: 976
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '16384'
    - item_type: preproc_def
      name: DHOPT_PXE_OPT
      pos:
        line_end: 978
        line_start: 977
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '32768'
    - item_type: preproc_def
      name: DHCP_PXE_DEF_VENDOR
      pos:
        line_end: 1002
        line_start: 1001
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '"PXEClient"'
    - item_type: preproc_def
      name: MATCH_VENDOR
      pos:
        line_end: 1004
        line_start: 1003
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: MATCH_USER
      pos:
        line_end: 1005
        line_start: 1004
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: MATCH_CIRCUIT
      pos:
        line_end: 1006
        line_start: 1005
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: MATCH_REMOTE
      pos:
        line_end: 1007
        line_start: 1006
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MATCH_SUBSCRIBER
      pos:
        line_end: 1008
        line_start: 1007
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '5'
    - item_type: preproc_def
      name: CONTEXT_STATIC
      pos:
        line_end: 1082
        line_start: 1081
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<0)
    - item_type: preproc_def
      name: CONTEXT_NETMASK
      pos:
        line_end: 1083
        line_start: 1082
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<1)
    - item_type: preproc_def
      name: CONTEXT_BRDCAST
      pos:
        line_end: 1084
        line_start: 1083
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<2)
    - item_type: preproc_def
      name: CONTEXT_PROXY
      pos:
        line_end: 1085
        line_start: 1084
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<3)
    - item_type: preproc_def
      name: CONTEXT_RA_ROUTER
      pos:
        line_end: 1086
        line_start: 1085
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<4)
    - item_type: preproc_def
      name: CONTEXT_RA_DONE
      pos:
        line_end: 1087
        line_start: 1086
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<5)
    - item_type: preproc_def
      name: CONTEXT_RA_NAME
      pos:
        line_end: 1088
        line_start: 1087
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<6)
    - item_type: preproc_def
      name: CONTEXT_RA_STATELESS
      pos:
        line_end: 1089
        line_start: 1088
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<7)
    - item_type: preproc_def
      name: CONTEXT_DHCP
      pos:
        line_end: 1090
        line_start: 1089
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<8)
    - item_type: preproc_def
      name: CONTEXT_DEPRECATE
      pos:
        line_end: 1091
        line_start: 1090
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<9)
    - item_type: preproc_def
      name: CONTEXT_TEMPLATE
      pos:
        line_end: 1092
        line_start: 1091
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '(1u<<10)    '
    - item_type: preproc_def
      name: CONTEXT_CONSTRUCTED
      pos:
        line_end: 1093
        line_start: 1092
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<11)
    - item_type: preproc_def
      name: CONTEXT_GC
      pos:
        line_end: 1094
        line_start: 1093
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<12)
    - item_type: preproc_def
      name: CONTEXT_RA
      pos:
        line_end: 1095
        line_start: 1094
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<13)
    - item_type: preproc_def
      name: CONTEXT_CONF_USED
      pos:
        line_end: 1096
        line_start: 1095
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<14)
    - item_type: preproc_def
      name: CONTEXT_USED
      pos:
        line_end: 1097
        line_start: 1096
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<15)
    - item_type: preproc_def
      name: CONTEXT_OLD
      pos:
        line_end: 1098
        line_start: 1097
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<16)
    - item_type: preproc_def
      name: CONTEXT_V6
      pos:
        line_end: 1099
        line_start: 1098
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<17)
    - item_type: preproc_def
      name: CONTEXT_RA_OFF_LINK
      pos:
        line_end: 1100
        line_start: 1099
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<18)
    - item_type: preproc_def
      name: CONTEXT_SETLEASE
      pos:
        line_end: 1101
        line_start: 1100
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: (1u<<19)
    - item_type: preproc_def
      name: EXTR_NAME_EXTRACT
      pos:
        line_end: 1442
        line_start: 1441
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EXTR_NAME_COMPARE
      pos:
        line_end: 1443
        line_start: 1442
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    - item_type: preproc_def
      name: EXTR_NAME_NOCASE
      pos:
        line_end: 1444
        line_start: 1443
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '3'
    - item_type: preproc_def
      name: EXTR_NAME_FLIP
      pos:
        line_end: 1445
        line_start: 1444
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '4'
    - item_type: preproc_def
      name: RRFILTER_EDNS0
      pos:
        line_end: 1905
        line_start: 1904
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '0'
    - item_type: preproc_def
      name: RRFILTER_DNSSEC
      pos:
        line_end: 1906
        line_start: 1905
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '1'
    - item_type: preproc_def
      name: RRFILTER_CONF
      pos:
        line_end: 1907
        line_start: 1906
        source_file: /src/dnsmasq/src/dnsmasq.h
      type_or_value: '2'
    structs:
    - fields:
      - name: event
        type: int
      item_type: struct
      name: event_desc
      pos:
        line_end: 175
        line_start: 173
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: rrtype
        type: unsigned short
      - name: datalen
        type: unsigned char
      - name: data[1]
        type: char
      item_type: struct
      name: datablock
      pos:
        line_end: 352
        line_start: 348
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: is6
        type: int
      - name: addr
        type: union all_addr
      - name: '*next'
        type: struct bogus_addr
      item_type: struct
      name: bogus_addr
      pos:
        line_end: 361
        line_start: 357
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: in
        type: struct in_addr
      - name: '*next'
        type: struct doctor
      item_type: struct
      name: doctor
      pos:
        line_end: 367
        line_start: 364
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: issrv
        type: int
      - name: offset
        type: unsigned int
      - name: '*next'
        type: struct mx_srv_record
      item_type: struct
      name: mx_srv_record
      pos:
        line_end: 374
        line_start: 369
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: order
        type: unsigned int
      - name: '*next'
        type: struct naptr
      item_type: struct
      name: naptr
      pos:
        line_end: 380
        line_start: 376
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: '*txt'
        type: unsigned char
      - name: class
        type: unsigned short
      - name: stat
        type: int
      - name: '*next'
        type: struct txt_record
      item_type: struct
      name: txt_record
      pos:
        line_end: 398
        line_start: 392
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: '*next'
        type: struct ptr_record
      item_type: struct
      name: ptr_record
      pos:
        line_end: 403
        line_start: 400
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: ttl
        type: int
      - name: '*alias'
        type: char
      - name: '*next'
        type: struct cname
      item_type: struct
      name: cname
      pos:
        line_end: 409
        line_start: 405
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: digestlen
        type: int
      - name: '*next'
        type: struct ds_config
      item_type: struct
      name: ds_config
      pos:
        line_end: 415
        line_start: 411
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: union all_addr
      - name: flags
        type: int
      - name: decline_time
        type: time_t
      - name: '*next'
        type: struct addrlist
      item_type: struct
      name: addrlist
      pos:
        line_end: 429
        line_start: 424
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*domain'
        type: char
      - name: '*interface_names'
        type: "struct auth_name_list {\n    char *name;\n    int flags;\n    struct
          auth_name_list *next;\n  }"
      - name: '*subnet'
        type: struct addrlist
      - name: '*exclude'
        type: struct addrlist
      - name: '*next'
        type: struct auth_zone
      item_type: struct
      name: auth_zone
      pos:
        line_end: 444
        line_start: 434
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: flags
        type: int
      - name: '*next'
        type: struct auth_name_list
      item_type: struct
      name: auth_name_list
      pos:
        line_end: 440
        line_start: 436
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: ttl
        type: int
      - name: '*names'
        type: "struct name_list {\n    char *name;\n    struct name_list *next;\n
          \ }"
      - name: addr
        type: struct in_addr
      - name: addr6
        type: struct in6_addr
      - name: '*next'
        type: struct host_record
      item_type: struct
      name: host_record
      pos:
        line_end: 458
        line_start: 449
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: '*next'
        type: struct name_list
      item_type: struct
      name: name_list
      pos:
        line_end: 454
        line_start: 451
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: '*intr'
        type: char
      - name: flags
        type: int
      - name: proto4
        type: struct in_addr
      - name: proto6
        type: struct in6_addr
      - name: '*addr'
        type: struct addrlist
      - name: '*next'
        type: struct interface_name
      item_type: struct
      name: interface_name
      pos:
        line_end: 478
        line_start: 470
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*next'
        type: struct blockdata
      - name: key[KEYBLOCK_LEN]
        type: unsigned char
      item_type: struct
      name: blockdata
      pos:
        line_end: 488
        line_start: 485
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*next'
        type: struct crec
      - name: addr
        type: union all_addr
      - name: ttd
        type: time_t
      - name: uid
        type: unsigned int
      - name: flags
        type: unsigned int
      - name: name
        type: "union {\n    char sname[SMALLDNAME];\n    union bigname *bname;\n    char
          *namep;\n  }"
      item_type: struct
      name: crec
      pos:
        line_end: 502
        line_start: 490
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: fd
        type: int
      - name: source_addr
        type: union mysockaddr
      - name: interface[IF_NAMESIZE+1]
        type: char
      - name: ifindex
        type: unsigned int
      - name: '*next'
        type: struct serverfd
      item_type: struct
      name: serverfd
      pos:
        line_end: 592
        line_start: 586
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*serv'
        type: struct server
      - name: fd
        type: int
      - name: refcount
        type: unsigned short
      item_type: struct
      name: randfd
      pos:
        line_end: 598
        line_start: 594
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*rfd'
        type: struct randfd
      - name: '*next'
        type: struct randfd_list
      item_type: struct
      name: randfd_list
      pos:
        line_end: 603
        line_start: 600
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: flags
        type: u16
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct server
      - name: serial
        type: int
      - name: last_server
        type: int
      - name: addr
        type: union mysockaddr
      - name: interface[IF_NAMESIZE+1]
        type: char
      - name: ifindex
        type: unsigned int
      - name: '*sfd'
        type: struct serverfd
      - name: tcpfd
        type: int
      - name: queries
        type: unsigned int
      - name: query_latency
        type: unsigned int
      - name: forwardtime
        type: time_t
      - name: forwardcount
        type: int
      item_type: struct
      name: server
      pos:
        line_end: 624
        line_start: 606
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: flags
        type: u16
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct server
      - name: addr
        type: struct in_addr
      item_type: struct
      name: serv_addr4
      pos:
        line_end: 632
        line_start: 627
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: flags
        type: u16
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct server
      - name: addr
        type: struct in6_addr
      item_type: struct
      name: serv_addr6
      pos:
        line_end: 639
        line_start: 634
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: flags
        type: u16
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct server
      item_type: struct
      name: serv_local
      pos:
        line_end: 645
        line_start: 641
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct rebind_domain
      item_type: struct
      name: rebind_domain
      pos:
        line_end: 650
        line_start: 647
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '**sets'
        type: char
      - name: '*domain'
        type: char
      - name: '*next'
        type: struct ipsets
      item_type: struct
      name: ipsets
      pos:
        line_end: 656
        line_start: 652
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: mark
        type: u32
      - name: '**patterns'
        type: char
      - name: '*next'
        type: struct allowlist
      item_type: struct
      name: allowlist
      pos:
        line_end: 662
        line_start: 658
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: union mysockaddr
      - name: netmask
        type: struct in_addr
      - name: tftp_ok
        type: int
      - name: dns_auth
        type: int
      - name: '*name'
        type: char
      - name: '*next'
        type: struct irec
      item_type: struct
      name: irec
      pos:
        line_end: 671
        line_start: 664
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: fd
        type: int
      - name: addr
        type: union mysockaddr
      - name: '*iface'
        type: struct irec
      - name: '*next'
        type: struct listener
      item_type: struct
      name: listener
      pos:
        line_end: 678
        line_start: 673
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: addr
        type: union mysockaddr
      - name: flags
        type: int
      - name: '*next'
        type: struct iname
      item_type: struct
      name: iname
      pos:
        line_end: 686
        line_start: 681
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: rr
        type: unsigned short
      - name: '*next'
        type: struct rrlist
      item_type: struct
      name: rrlist
      pos:
        line_end: 695
        line_start: 692
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: union mysockaddr
      - name: addr_used
        type: int
      - name: mask
        type: int
      item_type: struct
      name: mysubnet
      pos:
        line_end: 702
        line_start: 698
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*next'
        type: struct resolvc
      - name: is_default
        type: int
      - name: mtime
        type: time_t
      - name: ino
        type: ino_t
      - name: '*name'
        type: char
      item_type: struct
      name: resolvc
      pos:
        line_end: 715
        line_start: 705
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*next'
        type: struct hostsfile
      - name: flags
        type: int
      - name: '*fname'
        type: char
      - name: index
        type: unsigned int
      item_type: struct
      name: hostsfile
      pos:
        line_end: 729
        line_start: 724
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*next'
        type: struct dyndir
      - name: '*files'
        type: struct hostsfile
      - name: flags
        type: int
      - name: '*dname'
        type: char
      item_type: struct
      name: dyndir
      pos:
        line_end: 739
        line_start: 731
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: frec_src
        type: "struct frec_src {\n    union mysockaddr source;\n    union all_addr
          dest;\n    unsigned int iface, log_id, encode_bitmap, *encode_bigmap;\n
          \   int fd;\n    unsigned short orig_id, udp_pkt_size;\n    struct frec_src
          *next;\n  }"
      - name: '*sentto'
        type: struct server
      - name: '*rfds'
        type: struct randfd_list
      - name: new_id
        type: unsigned short
      - name: forwardall
        type: int
      - name: time
        type: time_t
      - name: forward_timestamp
        type: u32
      - name: forward_delay
        type: int
      - name: '*stash'
        type: struct blockdata
      - name: stash_len
        type: size_t
      - name: '*next'
        type: struct frec
      item_type: struct
      name: frec
      pos:
        line_end: 818
        line_start: 793
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: source
        type: union mysockaddr
      - name: dest
        type: union all_addr
      - name: iface
        type: unsigned int
      - name: fd
        type: int
      - name: orig_id
        type: unsigned short
      - name: '*next'
        type: struct frec_src
      item_type: struct
      name: frec_src
      pos:
        line_end: 801
        line_start: 794
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: clid_len
        type: int
      - name: '*clid'
        type: unsigned char
      - name: '*hostname'
        type: char
      - name: '*old_hostname'
        type: char
      - name: flags
        type: int
      - name: expires
        type: time_t
      - name: hwaddr_len
        type: int
      - name: hwaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: addr
        type: struct in_addr
      - name: '*extradata'
        type: unsigned char
      - name: extradata_len
        type: unsigned int
      - name: last_interface
        type: int
      - name: new_interface
        type: int
      - name: new_prefixlen
        type: int
      - name: '*agent_id'
        type: unsigned char
      - name: agent_id_len
        type: int
      - name: '*next'
        type: struct dhcp_lease
      item_type: struct
      name: dhcp_lease
      pos:
        line_end: 887
        line_start: 855
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: struct in6_addr
      - name: ping_time
        type: time_t
      - name: backoff
        type: int
      - name: '*next'
        type: struct slaac_address
      item_type: struct
      name: slaac_address
      pos:
        line_end: 883
        line_start: 878
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*net'
        type: char
      - name: '*next'
        type: struct dhcp_netid
      item_type: struct
      name: dhcp_netid
      pos:
        line_end: 892
        line_start: 889
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*list'
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_netid_list
      item_type: struct
      name: dhcp_netid_list
      pos:
        line_end: 897
        line_start: 894
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*set'
        type: struct dhcp_netid_list
      - name: '*tag'
        type: struct dhcp_netid
      - name: '*next'
        type: struct tag_if
      item_type: struct
      name: tag_if
      pos:
        line_end: 903
        line_start: 899
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: delay
        type: int
      - name: '*netid'
        type: struct dhcp_netid
      - name: '*next'
        type: struct delay_config
      item_type: struct
      name: delay_config
      pos:
        line_end: 909
        line_start: 905
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: hwaddr_len
        type: int
      - name: hwaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: wildcard_mask
        type: unsigned int
      - name: '*next'
        type: struct hwaddr_config
      item_type: struct
      name: hwaddr_config
      pos:
        line_end: 916
        line_start: 911
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: flags
        type: unsigned int
      - name: clid_len
        type: int
      - name: '*clid'
        type: unsigned char
      - name: '*hostname'
        type: char
      - name: '*netid'
        type: struct dhcp_netid_list
      - name: '*filter'
        type: struct dhcp_netid
      - name: addr
        type: struct in_addr
      - name: decline_time
        type: time_t
      - name: lease_time
        type: unsigned int
      - name: '*hwaddr'
        type: struct hwaddr_config
      - name: '*next'
        type: struct dhcp_config
      item_type: struct
      name: dhcp_config
      pos:
        line_end: 933
        line_start: 918
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: opt
        type: int
      - name: u
        type: "union {\n    int encap;\n    unsigned int wildcard_mask;\n    unsigned
          char *vendor_class;\n  }"
      - name: '*val'
        type: unsigned char
      - name: '*netid'
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_opt
      item_type: struct
      name: dhcp_opt
      pos:
        line_end: 960
        line_start: 950
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*file'
        type: char
      - name: next_server
        type: struct in_addr
      - name: '*netid'
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_boot
      item_type: struct
      name: dhcp_boot
      pos:
        line_end: 984
        line_start: 979
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: wildcard
        type: int
      - name: '*netid'
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_match_name
      item_type: struct
      name: dhcp_match_name
      pos:
        line_end: 991
        line_start: 986
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: CSA
        type: unsigned short
      - name: '*menu'
        type: char
      - name: server
        type: struct in_addr
      - name: '*netid'
        type: struct dhcp_netid
      - name: '*next'
        type: struct pxe_service
      item_type: struct
      name: pxe_service
      pos:
        line_end: 999
        line_start: 993
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: len
        type: int
      - name: enterprise
        type: unsigned int
      - name: '*data'
        type: char
      - name: netid
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_vendor
      item_type: struct
      name: dhcp_vendor
      pos:
        line_end: 1016
        line_start: 1010
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*data'
        type: char
      - name: '*next'
        type: struct dhcp_pxe_vendor
      item_type: struct
      name: dhcp_pxe_vendor
      pos:
        line_end: 1021
        line_start: 1018
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: mask
        type: unsigned int
      - name: hwaddr_len
        type: int
      - name: hwaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: netid
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_mac
      item_type: struct
      name: dhcp_mac
      pos:
        line_end: 1029
        line_start: 1023
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: iface[IF_NAMESIZE]
        type: char
      - name: '*alias'
        type: struct dhcp_bridge
      item_type: struct
      name: dhcp_bridge
      pos:
        line_end: 1034
        line_start: 1031
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*domain'
        type: char
      - name: '*interface'
        type: char
      - name: '*al'
        type: struct addrlist
      - name: start
        type: struct in_addr
      - name: start6
        type: struct in6_addr
      - name: is6
        type: int
      - name: '*next'
        type: struct cond_domain
      item_type: struct
      name: cond_domain
      pos:
        line_end: 1044
        line_start: 1036
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*name'
        type: char
      - name: '*mtu_name'
        type: char
      - name: interval
        type: int
      - name: '*next'
        type: struct ra_interface
      item_type: struct
      name: ra_interface
      pos:
        line_end: 1051
        line_start: 1046
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: lease_time
        type: unsigned int
      - name: netmask
        type: struct in_addr
      - name: local
        type: struct in_addr
      - name: start
        type: struct in_addr
      - name: flags
        type: int
      - name: netid
        type: struct dhcp_netid
      - name: '*next'
        type: struct dhcp_context
      item_type: struct
      name: dhcp_context
      pos:
        line_end: 1069
        line_start: 1053
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: if_index
        type: int
      - name: match_addr
        type: struct in_addr
      - name: '*next'
        type: struct shared_network
      item_type: struct
      name: shared_network
      pos:
        line_end: 1079
        line_start: 1071
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: struct in_addr
      - name: time
        type: time_t
      - name: hash
        type: unsigned int
      - name: '*next'
        type: struct ping_result
      item_type: struct
      name: ping_result
      pos:
        line_end: 1107
        line_start: 1102
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: refcount
        type: int
      - name: size
        type: off_t
      - name: dev
        type: dev_t
      - name: inode
        type: ino_t
      - name: filename[]
        type: char
      item_type: struct
      name: tftp_file
      pos:
        line_end: 1115
        line_start: 1109
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: sockfd
        type: int
      - name: retransmit
        type: time_t
      - name: lastack
        type: unsigned int
      - name: offset
        type: off_t
      - name: peer
        type: union mysockaddr
      - name: source
        type: union all_addr
      - name: if_index
        type: int
      - name: opt_blocksize
        type: unsigned char
      - name: '*file'
        type: struct tftp_file
      - name: '*next'
        type: struct tftp_transfer
      item_type: struct
      name: tftp_transfer
      pos:
        line_end: 1128
        line_start: 1117
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: addr
        type: struct in_addr
      - name: '*next'
        type: struct addr_list
      item_type: struct
      name: addr_list
      pos:
        line_end: 1133
        line_start: 1130
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*interface'
        type: char
      - name: '*prefix'
        type: char
      - name: missing
        type: int
      - name: '*next'
        type: struct tftp_prefix
      item_type: struct
      name: tftp_prefix
      pos:
        line_end: 1140
        line_start: 1135
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: local
        type: "union {\n    struct in_addr addr4;\n    struct in6_addr addr6;\n  }"
      - name: '*interface'
        type: char
      - name: iface_index
        type: int
      - name: port
        type: int
      - name: '*next'
        type: struct dhcp_relay
      item_type: struct
      name: dhcp_relay
      pos:
        line_end: 1158
        line_start: 1142
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: client
        type: struct in6_addr
      - name: prefix_len
        type: int
      - name: '*next'
        type: struct snoop_record
      item_type: struct
      name: snoop_record
      pos:
        line_end: 1155
        line_start: 1151
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: options[OPTION_SIZE]
        type: unsigned int
      - name: default_resolv
        type: struct resolvc
      - name: last_resolv
        type: time_t
      - name: '*servers_file'
        type: char
      - name: '*mxnames'
        type: struct mx_srv_record
      - name: '*naptr'
        type: struct naptr
      - name: '*txt'
        type: struct txt_record
      - name: '*ptr'
        type: struct ptr_record
      - name: '*cache_rr'
        type: struct rrlist
      - name: '*host_records'
        type: struct host_record
      - name: '*cnames'
        type: struct cname
      - name: '*auth_zones'
        type: struct auth_zone
      - name: '*int_names'
        type: struct interface_name
      - name: '*mxtarget'
        type: char
      - name: '*add_subnet4'
        type: struct mysubnet
      - name: '*add_subnet6'
        type: struct mysubnet
      - name: '*lease_file'
        type: char
      - name: '*username'
        type: char
      - name: '*luascript'
        type: char
      - name: '*authserver'
        type: char
      - name: '*authinterface'
        type: struct iname
      - name: '*secondary_forward_server'
        type: struct name_list
      - name: group_set
        type: int
      - name: '*domain_suffix'
        type: char
      - name: '*cond_domain'
        type: struct cond_domain
      - name: '*runfile'
        type: char
      - name: '*lease_change_command'
        type: char
      - name: '*if_names'
        type: struct iname
      - name: '*bogus_addr'
        type: struct bogus_addr
      - name: '*servers'
        type: struct server
      - name: '*no_rebind'
        type: struct rebind_domain
      - name: server_has_wildcard
        type: int
      - name: serverarraysz
        type: int
      - name: '*ipsets'
        type: struct ipsets
      - name: allowlist_mask
        type: u32
      - name: '*allowlists'
        type: struct allowlist
      - name: log_fac
        type: int
      - name: '*log_file'
        type: char
      - name: max_logs
        type: int
      - name: randport_limit
        type: int
      - name: cachesize
        type: int
      - name: port
        type: int
      - name: local_ttl
        type: unsigned long
      - name: '*dns_client_id'
        type: char
      - name: umbrella_org
        type: u32
      - name: umbrella_asset
        type: u32
      - name: umbrella_device[8]
        type: u8
      - name: host_index
        type: int
      - name: '*addn_hosts'
        type: struct hostsfile
      - name: '*dhcp'
        type: struct dhcp_context
      - name: '*ra_interfaces'
        type: struct ra_interface
      - name: '*dhcp_conf'
        type: struct dhcp_config
      - name: '*dhcp_opts'
        type: struct dhcp_opt
      - name: '*dhcp_name_match'
        type: struct dhcp_match_name
      - name: '*dhcp_pxe_vendors'
        type: struct dhcp_pxe_vendor
      - name: '*dhcp_vendors'
        type: struct dhcp_vendor
      - name: '*dhcp_macs'
        type: struct dhcp_mac
      - name: '*boot_config'
        type: struct dhcp_boot
      - name: '*pxe_services'
        type: struct pxe_service
      - name: '*tag_if'
        type: struct tag_if
      - name: '*override_relays'
        type: struct addr_list
      - name: '*relay4'
        type: struct dhcp_relay
      - name: '*delay_conf'
        type: struct delay_config
      - name: override
        type: int
      - name: enable_pxe
        type: int
      - name: doing_ra
        type: int
      - name: '*dhcp_ignore'
        type: struct dhcp_netid_list
      - name: '*force_broadcast'
        type: struct dhcp_netid_list
      - name: '*dhcp_hosts_file'
        type: struct hostsfile
      - name: '*dynamic_dirs'
        type: struct dyndir
      - name: dhcp_max
        type: int
      - name: dhcp_server_port
        type: int
      - name: start_tftp_port
        type: int
      - name: min_leasetime
        type: unsigned int
      - name: '*doctors'
        type: struct doctor
      - name: edns_pktsz
        type: unsigned short
      - name: '*tftp_prefix'
        type: char
      - name: '*if_prefix'
        type: struct tftp_prefix
      - name: duid_enterprise
        type: unsigned int
      - name: '*duid_config'
        type: unsigned char
      - name: '*dbus_name'
        type: char
      - name: '*ubus_name'
        type: char
      - name: '*dump_file'
        type: char
      - name: dump_mask
        type: int
      - name: soa_sn
        type: unsigned long
      - name: metrics[__METRIC_MAX]
        type: u32
      - name: fast_retry_time
        type: int
      - name: cache_max_expiry
        type: int
      - name: '*packet'
        type: char
      - name: packet_buff_sz
        type: int
      - name: '*namebuff'
        type: char
      - name: '*workspacename'
        type: char
      - name: '*frec_list'
        type: struct frec
      - name: '*free_frec_src'
        type: struct frec_src
      - name: frec_src_count
        type: int
      - name: '*sfds'
        type: struct serverfd
      - name: '*interfaces'
        type: struct irec
      - name: '*listeners'
        type: struct listener
      - name: '*srv_save'
        type: struct server
      - name: packet_len
        type: size_t
      - name: fd_save
        type: int
      - name: '*tcp_pids'
        type: pid_t
      - name: '*tcp_pipes'
        type: int
      - name: pipe_to_parent
        type: int
      - name: numrrand
        type: int
      - name: '*randomsocks'
        type: struct randfd
      - name: '*rfl_spare'
        type: struct randfd_list
      - name: v6pktinfo
        type: int
      - name: '*interface_addrs'
        type: struct addrlist
      - name: log_id
        type: int
      - name: '*log_source_addr'
        type: union mysockaddr
      - name: dhcpfd
        type: int
      - name: dhcp_packet
        type: struct iovec
      - name: '*dhcp_buff'
        type: char
      - name: '*ping_results'
        type: struct ping_result
      - name: '*lease_stream'
        type: FILE
      - name: '*bridges'
        type: struct dhcp_bridge
      - name: '*shared_networks'
        type: struct shared_network
      - name: '*dbus'
        type: void
      - name: '*tftp_trans'
        type: struct tftp_transfer
      - name: '*addrbuff'
        type: char
      - name: '*addrbuff2'
        type: char
      - name: max_procs
        type: int
      - name: max_procs_used
        type: uint
      item_type: struct
      name: daemon
      pos:
        line_end: 1343
        line_start: 1160
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: '*addr'
        type: union mysockaddr
      - name: '*hostinfo'
        type: struct addrinfo
      - name: '*interface'
        type: char
      - name: serv_port
        type: int
      - name: '*flags'
        type: u16
      item_type: struct
      name: server_details
      pos:
        line_end: 1351
        line_start: 1345
        source_file: /src/dnsmasq/src/dnsmasq.h
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/dnsmasq/src/dnsmasq.h
      type: unsigned char
    - item_type: typedef
      name: u16
      pos:
        line_end: 74
        line_start: 74
        source_file: /src/dnsmasq/src/dnsmasq.h
      type: unsigned short
    - item_type: typedef
      name: u32
      pos:
        line_end: 75
        line_start: 75
        source_file: /src/dnsmasq/src/dnsmasq.h
      type: unsigned int
    - item_type: typedef
      name: u64
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/dnsmasq/src/dnsmasq.h
      type: unsigned long long
    union:
    - fields:
      - name: addr4
        type: struct in_addr
      - name: addr6
        type: struct in6_addr
      - name: cname
        type: "struct {\n    union {\n      struct crec *cache;\n      char *name;\n
          \   } target;\n    unsigned int uid;\n    int is_name_ptr;  /* disciminates
          target union */\n  }"
      - name: key
        type: "struct {\n    struct blockdata *keydata;\n    unsigned short keylen,
          flags, keytag;\n    unsigned char algo;\n  }"
      - name: ds
        type: "struct {\n    struct blockdata *keydata;\n    unsigned short keylen,
          keytag;\n    unsigned char algo;\n    unsigned char digest; \n  }"
      - name: log
        type: "struct {\n    unsigned short keytag, algo, digest, rcode;\n    int
          ede;\n  }"
      - name: rrblock
        type: "struct {\n    unsigned short rrtype;\n    unsigned short datalen; \n
          \   struct blockdata *rrdata;\n  }"
      - name: rrdata
        type: "struct datablock {\n    unsigned short rrtype;\n    unsigned char datalen;
          /* also length of SOA in negative records. */\n    char data[1];\n  }"
      item_type: union
      name: all_addr
      pos:
        line_end: 353
        line_start: 312
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: name[MAXDNAME]
        type: char
      - name: '*next'
        type: union bigname
      item_type: union
      name: bigname
      pos:
        line_end: 483
        line_start: 480
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: sa
        type: struct sockaddr
      - name: in
        type: struct sockaddr_in
      - name: in6
        type: struct sockaddr_in6
      item_type: union
      name: mysockaddr
      pos:
        line_end: 559
        line_start: 555
        source_file: /src/dnsmasq/src/dnsmasq.h
    - fields:
      - name: (*af_unspec)(int family, void *addrp, char *mac, size_t maclen, void
          *parmv)
        type: int
      - name: (*af_inet)(struct in_addr local, int if_index, char *label, struct in_addr
          netmask, struct in_addr broadcast, void *vparam)
        type: int
      - name: (*af_inet6)(struct in6_addr *local, int prefix, int scope, int if_index,
          int flags, unsigned int preferred, unsigned int valid, void *vparam)
        type: int
      - name: (*af_local)(int index, unsigned int type, char *mac, size_t maclen,
          void *parm)
        type: int
      item_type: union
      name: callback_t
      pos:
        line_end: 1706
        line_start: 1701
        source_file: /src/dnsmasq/src/dnsmasq.h
- function_names:
  - opt6_len
  - opt6_type
  - opt6_ptr
  - opt6_user_vendor_ptr
  - opt6_user_vendor_len
  - opt6_user_vendor_next
  - dhcp6_reply
  - dhcp6_maybe_relay
  - dhcp6_no_relay
  - add_options
  - add_local_addrs
  - get_context_tag
  - check_ia
  - build_ia
  - end_ia
  - add_address
  - mark_context_used
  - mark_config_used
  - check_address
  - config_implies
  - config_valid
  - calculate_times
  - update_leases
  - log6_opts
  - log6_quiet
  - log6_packet
  - opt6_find
  - opt6_next
  - opt6_uint
  - relay_upstream6
  - relay_reply6
  - do_snoop_script_run
  source_file: /src/dnsmasq/src/rfc3315.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*clid'
        type: unsigned char
      - name: clid_len
        type: int
      - name: '*client_hostname'
        type: char
      - name: '*context'
        type: struct dhcp_context
      - name: '*link_address'
        type: struct in6_addr
      - name: xid
        type: unsigned int
      - name: '*iface_name'
        type: char
      - name: '*packet_options'
        type: void
      - name: '*tags'
        type: struct dhcp_netid
      - name: mac[DHCP_CHADDR_MAX]
        type: unsigned char
      - name: mac_len
        type: unsigned int
      item_type: struct
      name: state
      pos:
        line_end: 33
        line_start: 21
        source_file: /src/dnsmasq/src/rfc3315.c
    typedefs: []
    union: []
- function_names:
  - dump_init
  - dump_packet_udp
  - dump_packet_icmp
  - do_dump_packet
  source_file: /src/dnsmasq/src/dump.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: magic_number
        type: u32
      - name: version_major
        type: u16
      - name: version_minor
        type: u16
      - name: thiszone
        type: u32
      - name: sigfigs
        type: u32
      - name: snaplen
        type: u32
      - name: network
        type: u32
      item_type: struct
      name: pcap_hdr_s
      pos:
        line_end: 35
        line_start: 27
        source_file: /src/dnsmasq/src/dump.c
    - fields:
      - name: ts_sec
        type: u32
      - name: ts_usec
        type: u32
      - name: incl_len
        type: u32
      - name: orig_len
        type: u32
      item_type: struct
      name: pcaprec_hdr_s
      pos:
        line_end: 42
        line_start: 37
        source_file: /src/dnsmasq/src/dump.c
    - fields:
      - name: uh_sport
        type: u16
      - name: uh_dport
        type: u16
      - name: uh_ulen
        type: u16
      - name: uh_sum
        type: u16
      item_type: struct
      name: udphdr
      pos:
        line_end: 141
        line_start: 136
        source_file: /src/dnsmasq/src/dump.c
    typedefs: []
    union: []
- function_names:
  - log_start
  - log_reopen
  - free_entry
  - log_write
  - my_syslog
  - set_log_writer
  - check_log_writer
  - flush_log
  - die
  source_file: /src/dnsmasq/src/log.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_MESSAGE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/log.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: _PATH_LOG
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/dnsmasq/src/log.c
      type_or_value: '""  '
    structs:
    - fields:
      - name: offset
        type: int
      - name: pid
        type: pid_t
      - name: '*next'
        type: struct log_entry
      - name: payload[MAX_MESSAGE]
        type: char
      item_type: struct
      name: log_entry
      pos:
        line_end: 51
        line_start: 46
        source_file: /src/dnsmasq/src/log.c
    typedefs: []
    union: []
- function_names:
  - hide_meta
  - unhide_meta
  - unhide_metas
  - opt_malloc
  - opt_string_alloc
  - split_chr
  - split
  - canonicalise_opt
  - numeric_check
  - atoi_check
  - strtoul_check
  - atoi_check16
  - atoi_check8
  - add_txt
  - do_usage
  - ret_err
  - ret_err_free
  - goto_err
  - parse_mysockaddr
  - parse_server
  - parse_server_addr
  - parse_server_next
  - domain_rev4
  - domain_rev6
  - if_names_add
  - is_tag_prefix
  - set_prefix
  - dhcp_netid_create
  - dhcp_netid_free
  - dhcp_tags
  - dhcp_netid_list_free
  - dhcp_config_free
  - dhcp_context_free
  - dhcp_opt_free
  - parse_dhcp_opt
  - if
  - if
  - set_option_bool
  - reset_option_bool
  - one_opt
  - read_file
  - option_read_dynfile
  - one_file
  - file_filter
  - expand_filelist
  - read_servers_file
  - clear_dynamic_conf
  - clear_dhcp_opt
  - clear_dynamic_opt
  - reread_dhcp
  - read_opts
  source_file: /src/dnsmasq/src/option.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OPTSTRING
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '"951yZDNLERKzowefnbvhdkqr:m:p:c:l:s:i:t:u:g:a:x:S:C:A:T:H:Q:I:B:F:G:O:M:X:V:U:j:P:J:W:Y:2:4:6:7:8:0:3:"'
    - item_type: preproc_def
      name: LOPT_RELOAD
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '256'
    - item_type: preproc_def
      name: LOPT_NO_NAMES
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '257'
    - item_type: preproc_def
      name: LOPT_TFTP
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '258'
    - item_type: preproc_def
      name: LOPT_SECURE
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '259'
    - item_type: preproc_def
      name: LOPT_PREFIX
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '260'
    - item_type: preproc_def
      name: LOPT_PTR
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '261'
    - item_type: preproc_def
      name: LOPT_BRIDGE
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '262'
    - item_type: preproc_def
      name: LOPT_TFTP_MAX
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '263'
    - item_type: preproc_def
      name: LOPT_FORCE
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '264'
    - item_type: preproc_def
      name: LOPT_NOBLOCK
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '265'
    - item_type: preproc_def
      name: LOPT_LOG_OPTS
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '266'
    - item_type: preproc_def
      name: LOPT_MAX_LOGS
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '267'
    - item_type: preproc_def
      name: LOPT_CIRCUIT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '268'
    - item_type: preproc_def
      name: LOPT_REMOTE
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '269'
    - item_type: preproc_def
      name: LOPT_SUBSCR
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '270'
    - item_type: preproc_def
      name: LOPT_INTNAME
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '271'
    - item_type: preproc_def
      name: LOPT_BANK
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '272'
    - item_type: preproc_def
      name: LOPT_DHCP_HOST
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '273'
    - item_type: preproc_def
      name: LOPT_APREF
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '274'
    - item_type: preproc_def
      name: LOPT_OVERRIDE
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '275'
    - item_type: preproc_def
      name: LOPT_TFTPPORTS
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '276'
    - item_type: preproc_def
      name: LOPT_REBIND
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '277'
    - item_type: preproc_def
      name: LOPT_NOLAST
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '278'
    - item_type: preproc_def
      name: LOPT_OPTS
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '279'
    - item_type: preproc_def
      name: LOPT_DHCP_OPTS
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '280'
    - item_type: preproc_def
      name: LOPT_MATCH
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '281'
    - item_type: preproc_def
      name: LOPT_BROADCAST
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '282'
    - item_type: preproc_def
      name: LOPT_NEGTTL
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '283'
    - item_type: preproc_def
      name: LOPT_ALTPORT
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '284'
    - item_type: preproc_def
      name: LOPT_SCRIPTUSR
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '285'
    - item_type: preproc_def
      name: LOPT_LOCAL
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '286'
    - item_type: preproc_def
      name: LOPT_NAPTR
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '287'
    - item_type: preproc_def
      name: LOPT_MINPORT
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '288'
    - item_type: preproc_def
      name: LOPT_DHCP_FQDN
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '289'
    - item_type: preproc_def
      name: LOPT_CNAME
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '290'
    - item_type: preproc_def
      name: LOPT_PXE_PROMT
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '291'
    - item_type: preproc_def
      name: LOPT_PXE_SERV
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '292'
    - item_type: preproc_def
      name: LOPT_TEST
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '293'
    - item_type: preproc_def
      name: LOPT_TAG_IF
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '294'
    - item_type: preproc_def
      name: LOPT_PROXY
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '295'
    - item_type: preproc_def
      name: LOPT_GEN_NAMES
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '296'
    - item_type: preproc_def
      name: LOPT_MAXTTL
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '297'
    - item_type: preproc_def
      name: LOPT_NO_REBIND
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '298'
    - item_type: preproc_def
      name: LOPT_LOC_REBND
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '299'
    - item_type: preproc_def
      name: LOPT_ADD_MAC
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '300'
    - item_type: preproc_def
      name: LOPT_DNSSEC
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '301'
    - item_type: preproc_def
      name: LOPT_INCR_ADDR
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '302'
    - item_type: preproc_def
      name: LOPT_CONNTRACK
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '303'
    - item_type: preproc_def
      name: LOPT_FQDN
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '304'
    - item_type: preproc_def
      name: LOPT_LUASCRIPT
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '305'
    - item_type: preproc_def
      name: LOPT_RA
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '306'
    - item_type: preproc_def
      name: LOPT_DUID
      pos:
        line_end: 118
        line_start: 117
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '307'
    - item_type: preproc_def
      name: LOPT_HOST_REC
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '308'
    - item_type: preproc_def
      name: LOPT_TFTP_LC
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '309'
    - item_type: preproc_def
      name: LOPT_RR
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '310'
    - item_type: preproc_def
      name: LOPT_CLVERBIND
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '311'
    - item_type: preproc_def
      name: LOPT_MAXCTTL
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '312'
    - item_type: preproc_def
      name: LOPT_AUTHZONE
      pos:
        line_end: 124
        line_start: 123
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '313'
    - item_type: preproc_def
      name: LOPT_AUTHSERV
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '314'
    - item_type: preproc_def
      name: LOPT_AUTHTTL
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '315'
    - item_type: preproc_def
      name: LOPT_AUTHSOA
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '316'
    - item_type: preproc_def
      name: LOPT_AUTHSFS
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '317'
    - item_type: preproc_def
      name: LOPT_AUTHPEER
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '318'
    - item_type: preproc_def
      name: LOPT_IPSET
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '319'
    - item_type: preproc_def
      name: LOPT_SYNTH
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '320'
    - item_type: preproc_def
      name: LOPT_RELAY
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '323'
    - item_type: preproc_def
      name: LOPT_RA_PARAM
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '324'
    - item_type: preproc_def
      name: LOPT_ADD_SBNET
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '325'
    - item_type: preproc_def
      name: LOPT_QUIET_DHCP
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '326'
    - item_type: preproc_def
      name: LOPT_QUIET_DHCP6
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '327'
    - item_type: preproc_def
      name: LOPT_QUIET_RA
      pos:
        line_end: 137
        line_start: 136
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '328'
    - item_type: preproc_def
      name: LOPT_SEC_VALID
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '329'
    - item_type: preproc_def
      name: LOPT_TRUST_ANCHOR
      pos:
        line_end: 139
        line_start: 138
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '330'
    - item_type: preproc_def
      name: LOPT_DNSSEC_DEBUG
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '331'
    - item_type: preproc_def
      name: LOPT_REV_SERV
      pos:
        line_end: 141
        line_start: 140
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '332'
    - item_type: preproc_def
      name: LOPT_SERVERS_FILE
      pos:
        line_end: 142
        line_start: 141
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '333'
    - item_type: preproc_def
      name: LOPT_DNSSEC_CHECK
      pos:
        line_end: 143
        line_start: 142
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '334'
    - item_type: preproc_def
      name: LOPT_LOCAL_SERVICE
      pos:
        line_end: 144
        line_start: 143
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '335'
    - item_type: preproc_def
      name: LOPT_DNSSEC_TIME
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '336'
    - item_type: preproc_def
      name: LOPT_LOOP_DETECT
      pos:
        line_end: 146
        line_start: 145
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '337'
    - item_type: preproc_def
      name: LOPT_IGNORE_ADDR
      pos:
        line_end: 147
        line_start: 146
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '338'
    - item_type: preproc_def
      name: LOPT_MINCTTL
      pos:
        line_end: 148
        line_start: 147
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '339'
    - item_type: preproc_def
      name: LOPT_DHCP_INOTIFY
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '340'
    - item_type: preproc_def
      name: LOPT_DHOPT_INOTIFY
      pos:
        line_end: 150
        line_start: 149
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '341'
    - item_type: preproc_def
      name: LOPT_HOST_INOTIFY
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '342'
    - item_type: preproc_def
      name: LOPT_DNSSEC_STAMP
      pos:
        line_end: 152
        line_start: 151
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '343'
    - item_type: preproc_def
      name: LOPT_TFTP_NO_FAIL
      pos:
        line_end: 153
        line_start: 152
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '344'
    - item_type: preproc_def
      name: LOPT_MAXPORT
      pos:
        line_end: 154
        line_start: 153
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '345'
    - item_type: preproc_def
      name: LOPT_CPE_ID
      pos:
        line_end: 155
        line_start: 154
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '346'
    - item_type: preproc_def
      name: LOPT_SCRIPT_ARP
      pos:
        line_end: 156
        line_start: 155
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '347'
    - item_type: preproc_def
      name: LOPT_DHCPTTL
      pos:
        line_end: 157
        line_start: 156
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '348'
    - item_type: preproc_def
      name: LOPT_TFTP_MTU
      pos:
        line_end: 158
        line_start: 157
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '349'
    - item_type: preproc_def
      name: LOPT_REPLY_DELAY
      pos:
        line_end: 159
        line_start: 158
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '350'
    - item_type: preproc_def
      name: LOPT_RAPID_COMMIT
      pos:
        line_end: 160
        line_start: 159
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '351'
    - item_type: preproc_def
      name: LOPT_DUMPFILE
      pos:
        line_end: 161
        line_start: 160
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '352'
    - item_type: preproc_def
      name: LOPT_DUMPMASK
      pos:
        line_end: 162
        line_start: 161
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '353'
    - item_type: preproc_def
      name: LOPT_UBUS
      pos:
        line_end: 163
        line_start: 162
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '354'
    - item_type: preproc_def
      name: LOPT_NAME_MATCH
      pos:
        line_end: 164
        line_start: 163
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '355'
    - item_type: preproc_def
      name: LOPT_CAA
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '356'
    - item_type: preproc_def
      name: LOPT_SHARED_NET
      pos:
        line_end: 166
        line_start: 165
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '357'
    - item_type: preproc_def
      name: LOPT_IGNORE_CLID
      pos:
        line_end: 167
        line_start: 166
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '358'
    - item_type: preproc_def
      name: LOPT_SINGLE_PORT
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '359'
    - item_type: preproc_def
      name: LOPT_SCRIPT_TIME
      pos:
        line_end: 169
        line_start: 168
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '360'
    - item_type: preproc_def
      name: LOPT_PXE_VENDOR
      pos:
        line_end: 170
        line_start: 169
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '361'
    - item_type: preproc_def
      name: LOPT_DYNHOST
      pos:
        line_end: 171
        line_start: 170
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '362'
    - item_type: preproc_def
      name: LOPT_LOG_DEBUG
      pos:
        line_end: 172
        line_start: 171
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '363'
    - item_type: preproc_def
      name: LOPT_UMBRELLA
      pos:
        line_end: 173
        line_start: 172
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '364'
    - item_type: preproc_def
      name: LOPT_CMARK_ALST_EN
      pos:
        line_end: 174
        line_start: 173
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '365'
    - item_type: preproc_def
      name: LOPT_CMARK_ALST
      pos:
        line_end: 175
        line_start: 174
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '366'
    - item_type: preproc_def
      name: LOPT_QUIET_TFTP
      pos:
        line_end: 176
        line_start: 175
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '367'
    - item_type: preproc_def
      name: LOPT_NFTSET
      pos:
        line_end: 177
        line_start: 176
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '368'
    - item_type: preproc_def
      name: LOPT_FILTER_A
      pos:
        line_end: 178
        line_start: 177
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '369'
    - item_type: preproc_def
      name: LOPT_FILTER_AAAA
      pos:
        line_end: 179
        line_start: 178
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '370'
    - item_type: preproc_def
      name: LOPT_STRIP_SBNET
      pos:
        line_end: 180
        line_start: 179
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '371'
    - item_type: preproc_def
      name: LOPT_STRIP_MAC
      pos:
        line_end: 181
        line_start: 180
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '372'
    - item_type: preproc_def
      name: LOPT_CONF_OPT
      pos:
        line_end: 182
        line_start: 181
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '373'
    - item_type: preproc_def
      name: LOPT_CONF_SCRIPT
      pos:
        line_end: 183
        line_start: 182
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '374'
    - item_type: preproc_def
      name: LOPT_RANDPORT_LIM
      pos:
        line_end: 184
        line_start: 183
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '375'
    - item_type: preproc_def
      name: LOPT_FAST_RETRY
      pos:
        line_end: 185
        line_start: 184
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '376'
    - item_type: preproc_def
      name: LOPT_STALE_CACHE
      pos:
        line_end: 186
        line_start: 185
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '377'
    - item_type: preproc_def
      name: LOPT_NORR
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '378'
    - item_type: preproc_def
      name: LOPT_NO_IDENT
      pos:
        line_end: 188
        line_start: 187
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '379'
    - item_type: preproc_def
      name: LOPT_CACHE_RR
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '380'
    - item_type: preproc_def
      name: LOPT_FILTER_RR
      pos:
        line_end: 190
        line_start: 189
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '381'
    - item_type: preproc_def
      name: LOPT_NO_DHCP6
      pos:
        line_end: 191
        line_start: 190
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '382'
    - item_type: preproc_def
      name: LOPT_NO_DHCP4
      pos:
        line_end: 192
        line_start: 191
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '383'
    - item_type: preproc_def
      name: LOPT_MAX_PROCS
      pos:
        line_end: 193
        line_start: 192
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '384'
    - item_type: preproc_def
      name: LOPT_DNSSEC_LIMITS
      pos:
        line_end: 194
        line_start: 193
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '385'
    - item_type: preproc_def
      name: LOPT_PXE_OPT
      pos:
        line_end: 195
        line_start: 194
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '386'
    - item_type: preproc_def
      name: LOPT_NO_ENCODE
      pos:
        line_end: 196
        line_start: 195
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '387'
    - item_type: preproc_def
      name: LOPT_DO_ENCODE
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '388'
    - item_type: preproc_def
      name: LOPT_LEASEQUERY
      pos:
        line_end: 198
        line_start: 197
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '389'
    - item_type: preproc_def
      name: ARG_DUP
      pos:
        line_end: 403
        line_start: 402
        source_file: /src/dnsmasq/src/option.c
      type_or_value: OPT_LAST
    - item_type: preproc_def
      name: ARG_ONE
      pos:
        line_end: 404
        line_start: 403
        source_file: /src/dnsmasq/src/option.c
      type_or_value: OPT_LAST + 1
    - item_type: preproc_def
      name: ARG_USED_CL
      pos:
        line_end: 405
        line_start: 404
        source_file: /src/dnsmasq/src/option.c
      type_or_value: OPT_LAST + 2
    - item_type: preproc_def
      name: ARG_USED_FILE
      pos:
        line_end: 406
        line_start: 405
        source_file: /src/dnsmasq/src/option.c
      type_or_value: OPT_LAST + 3
    - item_type: preproc_def
      name: NOLOOP
      pos:
        line_end: 6121
        line_start: 6120
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '1'
    - item_type: preproc_def
      name: TESTLOOP
      pos:
        line_end: 6122
        line_start: 6121
        source_file: /src/dnsmasq/src/option.c
      type_or_value: '2      '
    structs:
    - fields:
      - name: '*c_name'
        type: char
      - name: c_val
        type: unsigned int
      item_type: struct
      name: "facilitynames[] = {\n  { \"kern\",   LOG_KERN },\n  { \"user\",   LOG_USER
        },\n  { \"mail\",   LOG_MAIL },\n  { \"daemon\", LOG_DAEMON },\n  { \"auth\",
        \  LOG_AUTH },\n  { \"syslog\", LOG_SYSLOG },\n  { \"lpr\",    LOG_LPR },\n
        \ { \"news\",   LOG_NEWS },\n  { \"uucp\",   LOG_UUCP },\n  { \"audit\",  LOG_AUDIT
        },\n  { \"cron\",   LOG_CRON },\n  { \"local0\", LOG_LOCAL0 },\n  { \"local1\",
        LOG_LOCAL1 },\n  { \"local2\", LOG_LOCAL2 },\n  { \"local3\", LOG_LOCAL3 },\n
        \ { \"local4\", LOG_LOCAL4 },\n  { \"local5\", LOG_LOCAL5 },\n  { \"local6\",
        LOG_LOCAL6 },\n  { \"local7\", LOG_LOCAL7 },\n  { NULL, 0 }\n}"
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/dnsmasq/src/option.c
    - fields:
      - name: '*name'
        type: char
      - name: has_arg
        type: int
      - name: '*flag'
        type: int
      - name: val
        type: int
      item_type: struct
      name: myoption
      pos:
        line_end: 60
        line_start: 55
        source_file: /src/dnsmasq/src/option.c
    - fields:
      - name: opt
        type: int
      - name: rept
        type: unsigned int
      - name: '* const flagdesc'
        type: char
      - name: '* const desc'
        type: char
      - name: '* const arg'
        type: char
      item_type: struct
      name: "usage[] = {\n  { 'a', ARG_DUP, \"<ipaddr>\",  gettext_noop(\"Specify
        local address(es) to listen on.\"), NULL },\n  { 'A', ARG_DUP, \"/<domain>/<ipaddr>\",
        gettext_noop(\"Return ipaddr for all hosts in specified domains.\"), NULL
        },\n  { 'b', OPT_BOGUSPRIV, NULL, gettext_noop(\"Fake reverse lookups for
        RFC1918 private address ranges.\"), NULL },\n  { 'B', ARG_DUP, \"<ipaddr>\",
        gettext_noop(\"Treat ipaddr as NXDOMAIN (defeats Verisign wildcard).\"), NULL
        }, \n  { 'c', ARG_ONE, \"<integer>\", gettext_noop(\"Specify the size of the
        cache in entries (defaults to %s).\"), \"$\" },\n  { 'C', ARG_DUP, \"<path>\",
        gettext_noop(\"Specify configuration file (defaults to %s).\"), CONFFILE },\n
        \ { 'd', OPT_DEBUG, NULL, gettext_noop(\"Do NOT fork into the background:
        run in debug mode.\"), NULL },\n  { 'D', OPT_NODOTS_LOCAL, NULL, gettext_noop(\"Do
        NOT forward queries with no domain part.\"), NULL }, \n  { 'e', OPT_SELFMX,
        NULL, gettext_noop(\"Return self-pointing MX records for local hosts.\"),
        NULL },\n  { 'E', OPT_EXPAND, NULL, gettext_noop(\"Expand simple names in
        /etc/hosts with domain-suffix.\"), NULL },\n  { 'f', OPT_FILTER, NULL, gettext_noop(\"Don't
        forward spurious DNS requests from Windows hosts.\"), NULL },\n  { LOPT_FILTER_A,
        ARG_DUP, NULL, gettext_noop(\"Don't include IPv4 addresses in DNS answers.\"),
        NULL },\n  { LOPT_FILTER_AAAA, ARG_DUP, NULL, gettext_noop(\"Don't include
        IPv6 addresses in DNS answers.\"), NULL },\n  { LOPT_FILTER_RR, ARG_DUP, \"<RR-type>\",
        gettext_noop(\"Don't include resource records of the given type in DNS answers.\"),
        NULL },\n  { 'F', ARG_DUP, \"<ipaddr>,...\", gettext_noop(\"Enable DHCP in
        the range given with lease duration.\"), NULL },\n  { 'g', ARG_ONE, \"<groupname>\",
        gettext_noop(\"Change to this group after startup (defaults to %s).\"), CHGRP
        },\n  { 'G', ARG_DUP, \"<hostspec>\", gettext_noop(\"Set address or hostname
        for a specified machine.\"), NULL },\n  { LOPT_DHCP_HOST, ARG_DUP, \"<path>\",
        gettext_noop(\"Read DHCP host specs from file.\"), NULL },\n  { LOPT_DHCP_OPTS,
        ARG_DUP, \"<path>\", gettext_noop(\"Read DHCP option specs from file.\"),
        NULL },\n  { LOPT_DHCP_INOTIFY, ARG_DUP, \"<path>\", gettext_noop(\"Read DHCP
        host specs from a directory.\"), NULL }, \n  { LOPT_DHOPT_INOTIFY, ARG_DUP,
        \"<path>\", gettext_noop(\"Read DHCP options from a directory.\"), NULL },
        \n  { LOPT_TAG_IF, ARG_DUP, \"tag-expression\", gettext_noop(\"Evaluate conditional
        tag expression.\"), NULL },\n  { 'h', OPT_NO_HOSTS, NULL, gettext_noop(\"Do
        NOT load %s file.\"), HOSTSFILE },\n  { 'H', ARG_DUP, \"<path>\", gettext_noop(\"Specify
        a hosts file to be read in addition to %s.\"), HOSTSFILE },\n  { LOPT_HOST_INOTIFY,
        ARG_DUP, \"<path>\", gettext_noop(\"Read hosts files from a directory.\"),
        NULL },\n  { 'i', ARG_DUP, \"<interface>\", gettext_noop(\"Specify interface(s)
        to listen on.\"), NULL },\n  { 'I', ARG_DUP, \"<interface>\", gettext_noop(\"Specify
        interface(s) NOT to listen on.\") , NULL },\n  { 'j', ARG_DUP, \"set:<tag>,<class>\",
        gettext_noop(\"Map DHCP user class to tag.\"), NULL },\n  { LOPT_CIRCUIT,
        ARG_DUP, \"set:<tag>,<circuit>\", gettext_noop(\"Map RFC3046 circuit-id to
        tag.\"), NULL },\n  { LOPT_REMOTE, ARG_DUP, \"set:<tag>,<remote>\", gettext_noop(\"Map
        RFC3046 remote-id to tag.\"), NULL },\n  { LOPT_SUBSCR, ARG_DUP, \"set:<tag>,<remote>\",
        gettext_noop(\"Map RFC3993 subscriber-id to tag.\"), NULL },\n  { LOPT_PXE_VENDOR,
        ARG_DUP, \"<vendor>[,...]\", gettext_noop(\"Specify vendor class to match
        for PXE requests.\"), NULL },\n  { 'J', ARG_DUP, \"tag:<tag>...\", gettext_noop(\"Don't
        do DHCP for hosts with tag set.\"), NULL },\n  { LOPT_BROADCAST, ARG_DUP,
        \"[=tag:<tag>...]\", gettext_noop(\"Force broadcast replies for hosts with
        tag set.\"), NULL }, \n  { 'k', OPT_NO_FORK, NULL, gettext_noop(\"Do NOT fork
        into the background, do NOT run in debug mode.\"), NULL },\n  { 'K', OPT_AUTHORITATIVE,
        NULL, gettext_noop(\"Assume we are the only DHCP server on the local network.\"),
        NULL },\n  { 'l', ARG_ONE, \"<path>\", gettext_noop(\"Specify where to store
        DHCP leases (defaults to %s).\"), LEASEFILE },\n  { 'L', OPT_LOCALMX, NULL,
        gettext_noop(\"Return MX records for local hosts.\"), NULL },\n  { 'm', ARG_DUP,
        \"<host_name>,<target>,<pref>\", gettext_noop(\"Specify an MX record.\"),
        NULL },\n  { 'M', ARG_DUP, \"<bootp opts>\", gettext_noop(\"Specify BOOTP
        options to DHCP server.\"), NULL },\n  { 'n', OPT_NO_POLL, NULL, gettext_noop(\"Do
        NOT poll %s file, reload only on SIGHUP.\"), RESOLVFILE }, \n  { 'N', OPT_NO_NEG,
        NULL, gettext_noop(\"Do NOT cache failed search results.\"), NULL },\n  {
        LOPT_STALE_CACHE, ARG_ONE, \"[=<max_expired>]\", gettext_noop(\"Use expired
        cache data for faster reply.\"), NULL },\n  { 'o', OPT_ORDER, NULL, gettext_noop(\"Use
        nameservers strictly in the order given in %s.\"), RESOLVFILE },\n  { 'O',
        ARG_DUP, \"<optspec>\", gettext_noop(\"Specify options to be sent to DHCP
        clients.\"), NULL },\n  { LOPT_FORCE, ARG_DUP, \"<optspec>\", gettext_noop(\"DHCP
        option sent even if the client does not request it.\"), NULL},\n  { LOPT_PXE_OPT,
        ARG_DUP, \"<optspec>\", gettext_noop(\"DHCP option sent only to PXE clients.\"),
        NULL},\n  { 'p', ARG_ONE, \"<integer>\", gettext_noop(\"Specify port to listen
        for DNS requests on (defaults to 53).\"), NULL },\n  { 'P', ARG_ONE, \"<integer>\",
        gettext_noop(\"Maximum supported UDP packet size for EDNS.0 (defaults to %s).\"),
        \"*\" },\n  { 'q', ARG_DUP, NULL, gettext_noop(\"Log DNS queries.\"), NULL
        },\n  { 'Q', ARG_ONE, \"<integer>\", gettext_noop(\"Force the originating
        port for upstream DNS queries.\"), NULL },\n  { LOPT_RANDPORT_LIM, ARG_ONE,
        \"#ports\", gettext_noop(\"Set maximum number of random originating ports
        for a query.\"), NULL },\n  { 'R', OPT_NO_RESOLV, NULL, gettext_noop(\"Do
        NOT read resolv.conf.\"), NULL },\n  { 'r', ARG_DUP, \"<path>\", gettext_noop(\"Specify
        path to resolv.conf (defaults to %s).\"), RESOLVFILE }, \n  { LOPT_SERVERS_FILE,
        ARG_ONE, \"<path>\", gettext_noop(\"Specify path to file with server= options\"),
        NULL },\n  { 'S', ARG_DUP, \"/<domain>/<ipaddr>\", gettext_noop(\"Specify
        address(es) of upstream servers with optional domains.\"), NULL },\n  { LOPT_REV_SERV,
        ARG_DUP, \"<addr>/<prefix>,<ipaddr>\", gettext_noop(\"Specify address of upstream
        servers for reverse address queries\"), NULL },\n  { LOPT_LOCAL, ARG_DUP,
        \"/<domain>/\", gettext_noop(\"Never forward queries to specified domains.\"),
        NULL },\n  { 's', ARG_DUP, \"<domain>[,<range>]\", gettext_noop(\"Specify
        the domain to be assigned in DHCP leases.\"), NULL },\n  { 't', ARG_ONE, \"<host_name>\",
        gettext_noop(\"Specify default target in an MX record.\"), NULL },\n  { 'T',
        ARG_ONE, \"<integer>\", gettext_noop(\"Specify time-to-live in seconds for
        replies from /etc/hosts.\"), NULL },\n  { LOPT_NEGTTL, ARG_ONE, \"<integer>\",
        gettext_noop(\"Specify time-to-live in seconds for negative caching.\"), NULL
        },\n  { LOPT_MAXTTL, ARG_ONE, \"<integer>\", gettext_noop(\"Specify time-to-live
        in seconds for maximum TTL to send to clients.\"), NULL },\n  { LOPT_MAXCTTL,
        ARG_ONE, \"<integer>\", gettext_noop(\"Specify time-to-live ceiling for cache.\"),
        NULL },\n  { LOPT_MINCTTL, ARG_ONE, \"<integer>\", gettext_noop(\"Specify
        time-to-live floor for cache.\"), NULL },\n  { LOPT_FAST_RETRY, ARG_ONE, \"<milliseconds>\",
        gettext_noop(\"Retry DNS queries after this many milliseconds.\"), NULL},\n
        \ { 'u', ARG_ONE, \"<username>\", gettext_noop(\"Change to this user after
        startup. (defaults to %s).\"), CHUSER }, \n  { 'U', ARG_DUP, \"set:<tag>,<class>\",
        gettext_noop(\"Map DHCP vendor class to tag.\"), NULL },\n  { 'v', 0, NULL,
        gettext_noop(\"Display dnsmasq version and copyright information.\"), NULL
        },\n  { 'V', ARG_DUP, \"<ipaddr>,<ipaddr>,<netmask>\", gettext_noop(\"Translate
        IPv4 addresses from upstream servers.\"), NULL },\n  { 'W', ARG_DUP, \"<name>,<target>,...\",
        gettext_noop(\"Specify a SRV record.\"), NULL },\n  { 'w', 0, NULL, gettext_noop(\"Display
        this message. Use --help dhcp or --help dhcp6 for known DHCP options.\"),
        NULL },\n  { 'x', ARG_ONE, \"<path>\", gettext_noop(\"Specify path of PID
        file (defaults to %s).\"), RUNFILE },\n  { 'X', ARG_ONE, \"<integer>\", gettext_noop(\"Specify
        maximum number of DHCP leases (defaults to %s).\"), \"&\" },\n  { 'y', OPT_LOCALISE,
        NULL, gettext_noop(\"Answer DNS queries based on the interface a query was
        sent to.\"), NULL },\n  { 'Y', ARG_DUP, \"<name>,<txt>[,<txt]\", gettext_noop(\"Specify
        TXT DNS record.\"), NULL },\n  { LOPT_PTR, ARG_DUP, \"<name>,<target>\", gettext_noop(\"Specify
        PTR DNS record.\"), NULL },\n  { LOPT_INTNAME, ARG_DUP, \"<name>,<interface>\",
        gettext_noop(\"Give DNS name to IPv4 address of interface.\"), NULL },\n  {
        'z', OPT_NOWILD, NULL, gettext_noop(\"Bind only to interfaces in use.\"),
        NULL },\n  { 'Z', OPT_ETHERS, NULL, gettext_noop(\"Read DHCP static host information
        from %s.\"), ETHERSFILE },\n  { '1', ARG_ONE, \"[=<busname>]\", gettext_noop(\"Enable
        the DBus interface for setting upstream servers, etc.\"), NULL },\n  { LOPT_UBUS,
        ARG_ONE, \"[=<busname>]\", gettext_noop(\"Enable the UBus interface.\"), NULL
        },\n  { '2', ARG_DUP, \"<interface>\", gettext_noop(\"Do not provide DHCP
        on this interface, only provide DNS.\"), NULL },\n  { LOPT_NO_DHCP6, ARG_DUP,
        \"<interface>\", gettext_noop(\"Do not provide DHCPv6 on this interface.\"),
        NULL },\n  { LOPT_NO_DHCP4, ARG_DUP, \"<interface>\", gettext_noop(\"Do not
        provide DHCPv4 on this interface.\"), NULL },\n  { '3', ARG_DUP, \"[=tag:<tag>]...\",
        gettext_noop(\"Enable dynamic address allocation for bootp.\"), NULL },\n
        \ { '4', ARG_DUP, \"set:<tag>,<mac address>\", gettext_noop(\"Map MAC address
        (with wildcards) to option set.\"), NULL },\n  { LOPT_BRIDGE, ARG_DUP, \"<iface>,<alias>..\",
        gettext_noop(\"Treat DHCP requests on aliases as arriving from interface.\"),
        NULL },\n  { LOPT_SHARED_NET, ARG_DUP, \"<iface>|<addr>,<addr>\", gettext_noop(\"Specify
        extra networks sharing a broadcast domain for DHCP\"), NULL},\n  { LOPT_LEASEQUERY,
        ARG_DUP, \"[<addr>[/prefix>]]\", gettext_noop(\"Enable RFC 4388 leasequery
        functions for DHCPv4\"), NULL },\n  { '5', OPT_NO_PING, NULL, gettext_noop(\"Disable
        ICMP echo address checking in the DHCP server.\"), NULL },\n  { '6', ARG_ONE,
        \"<path>\", gettext_noop(\"Shell script to run on DHCP lease creation and
        destruction.\"), NULL },\n  { LOPT_LUASCRIPT, ARG_DUP, \"path\", gettext_noop(\"Lua
        script to run on DHCP lease creation and destruction.\"), NULL },\n  { LOPT_SCRIPTUSR,
        ARG_ONE, \"<username>\", gettext_noop(\"Run lease-change scripts as this user.\"),
        NULL },\n  { LOPT_SCRIPT_ARP, OPT_SCRIPT_ARP, NULL, gettext_noop(\"Call dhcp-script
        with changes to local ARP table.\"), NULL },\n  { '7', ARG_DUP, \"<path>\",
        gettext_noop(\"Read configuration from all the files in this directory.\"),
        NULL },\n  { LOPT_CONF_SCRIPT, ARG_DUP, \"<path>\", gettext_noop(\"Execute
        file and read configuration from stdin.\"), NULL },\n  { '8', ARG_ONE, \"<facility>|<file>\",
        gettext_noop(\"Log to this syslog facility or file. (defaults to DAEMON)\"),
        NULL },\n  { '9', OPT_LEASE_RO, NULL, gettext_noop(\"Do not use leasefile.\"),
        NULL },\n  { '0', ARG_ONE, \"<integer>\", gettext_noop(\"Maximum number of
        concurrent DNS queries. (defaults to %s)\"), \"!\" }, \n  { LOPT_RELOAD, OPT_RELOAD,
        NULL, gettext_noop(\"Clear DNS cache when reloading %s.\"), RESOLVFILE },\n
        \ { LOPT_NO_NAMES, ARG_DUP, \"[=tag:<tag>]...\", gettext_noop(\"Ignore hostnames
        provided by DHCP clients.\"), NULL },\n  { LOPT_OVERRIDE, OPT_NO_OVERRIDE,
        NULL, gettext_noop(\"Do NOT reuse filename and server fields for extra DHCP
        options.\"), NULL },\n  { LOPT_TFTP, ARG_DUP, \"[=<intr>[,<intr>]]\", gettext_noop(\"Enable
        integrated read-only TFTP server.\"), NULL },\n  { LOPT_PREFIX, ARG_DUP, \"<dir>[,<iface>]\",
        gettext_noop(\"Export files by TFTP only from the specified subtree.\"), NULL
        },\n  { LOPT_APREF, ARG_DUP, \"[=ip|mac]\", gettext_noop(\"Add client IP or
        hardware address to tftp-root.\"), NULL },\n  { LOPT_SECURE, OPT_TFTP_SECURE,
        NULL, gettext_noop(\"Allow access only to files owned by the user running
        dnsmasq.\"), NULL },\n  { LOPT_TFTP_NO_FAIL, OPT_TFTP_NO_FAIL, NULL, gettext_noop(\"Do
        not terminate the service if TFTP directories are inaccessible.\"), NULL },\n
        \ { LOPT_TFTP_MAX, ARG_ONE, \"<integer>\", gettext_noop(\"Maximum number of
        concurrent TFTP transfers (defaults to %s).\"), \"#\" },\n  { LOPT_TFTP_MTU,
        ARG_ONE, \"<integer>\", gettext_noop(\"Maximum MTU to use for TFTP transfers.\"),
        NULL },\n  { LOPT_NOBLOCK, OPT_TFTP_NOBLOCK, NULL, gettext_noop(\"Disable
        the TFTP blocksize extension.\"), NULL },\n  { LOPT_TFTP_LC, OPT_TFTP_LC,
        NULL, gettext_noop(\"Convert TFTP filenames to lowercase\"), NULL },\n  {
        LOPT_TFTPPORTS, ARG_ONE, \"<start>,<end>\", gettext_noop(\"Ephemeral port
        range for use by TFTP transfers.\"), NULL },\n  { LOPT_SINGLE_PORT, OPT_SINGLE_PORT,
        NULL, gettext_noop(\"Use only one port for TFTP server.\"), NULL },\n  { LOPT_LOG_OPTS,
        OPT_LOG_OPTS, NULL, gettext_noop(\"Extra logging for DHCP.\"), NULL },\n  {
        LOPT_MAX_LOGS, ARG_ONE, \"[=<integer>]\", gettext_noop(\"Enable async. logging;
        optionally set queue length.\"), NULL },\n  { LOPT_REBIND, OPT_NO_REBIND,
        NULL, gettext_noop(\"Stop DNS rebinding. Filter private IP ranges when resolving.\"),
        NULL },\n  { LOPT_LOC_REBND, OPT_LOCAL_REBIND, NULL, gettext_noop(\"Allow
        rebinding of 127.0.0.0/8, for RBL servers.\"), NULL },\n  { LOPT_NO_REBIND,
        ARG_DUP, \"/<domain>/\", gettext_noop(\"Inhibit DNS-rebind protection on this
        domain.\"), NULL },\n  { LOPT_NOLAST, OPT_ALL_SERVERS, NULL, gettext_noop(\"Always
        perform DNS queries to all servers.\"), NULL },\n  { LOPT_MATCH, ARG_DUP,
        \"set:<tag>,<optspec>\", gettext_noop(\"Set tag if client includes matching
        option in request.\"), NULL },\n  { LOPT_NAME_MATCH, ARG_DUP, \"set:<tag>,<string>[*]\",
        gettext_noop(\"Set tag if client provides given name.\"), NULL },\n  { LOPT_ALTPORT,
        ARG_ONE, \"[=<ports>]\", gettext_noop(\"Use alternative ports for DHCP.\"),
        NULL },\n  { LOPT_NAPTR, ARG_DUP, \"<name>,<naptr>\", gettext_noop(\"Specify
        NAPTR DNS record.\"), NULL },\n  { LOPT_MINPORT, ARG_ONE, \"<port>\", gettext_noop(\"Specify
        lowest port available for DNS query transmission.\"), NULL },\n  { LOPT_MAXPORT,
        ARG_ONE, \"<port>\", gettext_noop(\"Specify highest port available for DNS
        query transmission.\"), NULL },\n  { LOPT_DHCP_FQDN, OPT_DHCP_FQDN, NULL,
        gettext_noop(\"Use only fully qualified domain names for DHCP clients.\"),
        NULL },\n  { LOPT_GEN_NAMES, ARG_DUP, \"[=tag:<tag>]\", gettext_noop(\"Generate
        hostnames based on MAC address for nameless clients.\"), NULL},\n  { LOPT_PROXY,
        ARG_DUP, \"[=<ipaddr>]...\", gettext_noop(\"Use these DHCP relays as full
        proxies.\"), NULL },\n  { LOPT_RELAY, ARG_DUP, \"<local-addr>,<server>[,<iface>]\",
        gettext_noop(\"Relay DHCP requests to a remote server\"), NULL},\n  { LOPT_CNAME,
        ARG_DUP, \"<alias>,<target>[,<ttl>]\", gettext_noop(\"Specify alias name for
        LOCAL DNS name.\"), NULL },\n  { LOPT_PXE_PROMT, ARG_DUP, \"<prompt>,[<timeout>]\",
        gettext_noop(\"Prompt to send to PXE clients.\"), NULL },\n  { LOPT_PXE_SERV,
        ARG_DUP, \"<service>\", gettext_noop(\"Boot service for PXE menu.\"), NULL
        },\n  { LOPT_TEST, 0, NULL, gettext_noop(\"Check configuration syntax.\"),
        NULL },\n  { LOPT_ADD_MAC, ARG_DUP, \"[=base64|text]\", gettext_noop(\"Add
        requestor's MAC address to forwarded DNS queries.\"), NULL },\n  { LOPT_STRIP_MAC,
        OPT_STRIP_MAC, NULL, gettext_noop(\"Strip MAC information from queries.\"),
        NULL },\n  { LOPT_ADD_SBNET, ARG_ONE, \"<v4 pref>[,<v6 pref>]\", gettext_noop(\"Add
        specified IP subnet to forwarded DNS queries.\"), NULL },\n  { LOPT_STRIP_SBNET,
        OPT_STRIP_ECS, NULL, gettext_noop(\"Strip ECS information from queries.\"),
        NULL },\n  { LOPT_CPE_ID, ARG_ONE, \"<text>\", gettext_noop(\"Add client identification
        to forwarded DNS queries.\"), NULL },\n  { LOPT_DNSSEC, OPT_DNSSEC_PROXY,
        NULL, gettext_noop(\"Proxy DNSSEC validation results from upstream nameservers.\"),
        NULL },\n  { LOPT_INCR_ADDR, OPT_CONSEC_ADDR, NULL, gettext_noop(\"Attempt
        to allocate sequential IP addresses to DHCP clients.\"), NULL },\n  { LOPT_IGNORE_CLID,
        OPT_IGNORE_CLID, NULL, gettext_noop(\"Ignore client identifier option sent
        by DHCP clients.\"), NULL },\n  { LOPT_CONNTRACK, OPT_CONNTRACK, NULL, gettext_noop(\"Copy
        connection-track mark from queries to upstream connections.\"), NULL },\n
        \ { LOPT_FQDN, OPT_FQDN_UPDATE, NULL, gettext_noop(\"Allow DHCP clients to
        do their own DDNS updates.\"), NULL },\n  { LOPT_RA, OPT_RA, NULL, gettext_noop(\"Send
        router-advertisements for interfaces doing DHCPv6\"), NULL },\n  { LOPT_DUID,
        ARG_ONE, \"<enterprise>,<duid>\", gettext_noop(\"Specify DUID_EN-type DHCPv6
        server DUID\"), NULL },\n  { LOPT_HOST_REC, ARG_DUP, \"<name>,<address>[,<ttl>]\",
        gettext_noop(\"Specify host (A/AAAA and PTR) records\"), NULL },\n  { LOPT_DYNHOST,
        ARG_DUP, \"<name>,[<IPv4>][,<IPv6>],<interface-name>\", gettext_noop(\"Specify
        host record in interface subnet\"), NULL },\n  { LOPT_CAA, ARG_DUP, \"<name>,<flags>,<tag>,<value>\",
        gettext_noop(\"Specify certification authority authorization record\"), NULL
        },  \n  { LOPT_RR, ARG_DUP, \"<name>,<RR-number>,[<data>]\", gettext_noop(\"Specify
        arbitrary DNS resource record\"), NULL },\n  { LOPT_CLVERBIND, OPT_CLEVERBIND,
        NULL, gettext_noop(\"Bind to interfaces in use - check for new interfaces\"),
        NULL },\n  { LOPT_AUTHSERV, ARG_ONE, \"<NS>,<interface>\", gettext_noop(\"Export
        local names to global DNS\"), NULL },\n  { LOPT_AUTHZONE, ARG_DUP, \"<domain>,[<subnet>...]\",
        gettext_noop(\"Domain to export to global DNS\"), NULL },\n  { LOPT_AUTHTTL,
        ARG_ONE, \"<integer>\", gettext_noop(\"Set TTL for authoritative replies\"),
        NULL },\n  { LOPT_AUTHSOA, ARG_ONE, \"<serial>[,...]\", gettext_noop(\"Set
        authoritative zone information\"), NULL },\n  { LOPT_AUTHSFS, ARG_DUP, \"<NS>[,<NS>...]\",
        gettext_noop(\"Secondary authoritative nameservers for forward domains\"),
        NULL },\n  { LOPT_AUTHPEER, ARG_DUP, \"<ipaddr>[,<ipaddr>...]\", gettext_noop(\"Peers
        which are allowed to do zone transfer\"), NULL },\n  { LOPT_IPSET, ARG_DUP,
        \"/<domain>[/<domain>...]/<ipset>...\", gettext_noop(\"Specify ipsets to which
        matching domains should be added\"), NULL },\n  { LOPT_NFTSET, ARG_DUP, \"/<domain>[/<domain>...]/<nftset>...\",
        gettext_noop(\"Specify nftables sets to which matching domains should be added\"),
        NULL },\n  { LOPT_CMARK_ALST_EN, ARG_ONE, \"[=<mask>]\", gettext_noop(\"Enable
        filtering of DNS queries with connection-track marks.\"), NULL },\n  { LOPT_CMARK_ALST,
        ARG_DUP, \"<connmark>[/<mask>][,<pattern>[/<pattern>...]]\", gettext_noop(\"Set
        allowed DNS patterns for a connection-track mark.\"), NULL },\n  { LOPT_SYNTH,
        ARG_DUP, \"<domain>,<range>,[<prefix>]\", gettext_noop(\"Specify a domain
        and address range for synthesised names\"), NULL },\n  { LOPT_SEC_VALID, OPT_DNSSEC_VALID,
        NULL, gettext_noop(\"Activate DNSSEC validation\"), NULL },\n  { LOPT_TRUST_ANCHOR,
        ARG_DUP, \"<domain>,[<class>,]...\", gettext_noop(\"Specify trust anchor key
        digest.\"), NULL },\n  { LOPT_DNSSEC_DEBUG, OPT_DNSSEC_DEBUG, NULL, gettext_noop(\"Disable
        upstream checking for DNSSEC debugging.\"), NULL },\n  { LOPT_DNSSEC_CHECK,
        ARG_DUP, NULL, gettext_noop(\"Ensure answers without DNSSEC are in unsigned
        zones.\"), NULL },\n  { LOPT_DNSSEC_TIME, OPT_DNSSEC_TIME, NULL, gettext_noop(\"Don't
        check DNSSEC signature timestamps until first cache-reload\"), NULL },\n  {
        LOPT_DNSSEC_STAMP, ARG_ONE, \"<path>\", gettext_noop(\"Timestamp file to verify
        system clock for DNSSEC\"), NULL },\n  { LOPT_DNSSEC_LIMITS, ARG_ONE, \"<limit>,..\",
        gettext_noop(\"Set resource limits for DNSSEC validation\"), NULL },\n  {
        LOPT_RA_PARAM, ARG_DUP, \"<iface>,[mtu:<value>|<interface>|off,][<prio>,]<intval>[,<lifetime>]\",
        gettext_noop(\"Set MTU, priority, resend-interval and router-lifetime\"),
        NULL },\n  { LOPT_QUIET_DHCP, OPT_QUIET_DHCP, NULL, gettext_noop(\"Do not
        log routine DHCP.\"), NULL },\n  { LOPT_QUIET_DHCP6, OPT_QUIET_DHCP6, NULL,
        gettext_noop(\"Do not log routine DHCPv6.\"), NULL },\n  { LOPT_QUIET_RA,
        OPT_QUIET_RA, NULL, gettext_noop(\"Do not log RA.\"), NULL },\n  { LOPT_LOG_DEBUG,
        OPT_LOG_DEBUG, NULL, gettext_noop(\"Log debugging information.\"), NULL },
        \n  { LOPT_LOCAL_SERVICE, ARG_ONE, NULL, gettext_noop(\"Accept queries only
        from directly-connected networks.\"), NULL },\n  { LOPT_LOOP_DETECT, OPT_LOOP_DETECT,
        NULL, gettext_noop(\"Detect and remove DNS forwarding loops.\"), NULL },\n
        \ { LOPT_IGNORE_ADDR, ARG_DUP, \"<ipaddr>\", gettext_noop(\"Ignore DNS responses
        containing ipaddr.\"), NULL }, \n  { LOPT_DHCPTTL, ARG_ONE, \"<ttl>\", gettext_noop(\"Set
        TTL in DNS responses with DHCP-derived addresses.\"), NULL }, \n  { LOPT_REPLY_DELAY,
        ARG_ONE, \"<integer>\", gettext_noop(\"Delay DHCP replies for at least number
        of seconds.\"), NULL },\n  { LOPT_RAPID_COMMIT, OPT_RAPID_COMMIT, NULL, gettext_noop(\"Enables
        DHCPv4 Rapid Commit option.\"), NULL },\n  { LOPT_DUMPFILE, ARG_ONE, \"<path>\",
        gettext_noop(\"Path to debug packet dump file.\"), NULL },\n  { LOPT_DUMPMASK,
        ARG_ONE, \"<hex>\", gettext_noop(\"Mask which packets to dump.\"), NULL },\n
        \ { LOPT_SCRIPT_TIME, OPT_LEASE_RENEW, NULL, gettext_noop(\"Call dhcp-script
        when lease expiry changes.\"), NULL },\n  { LOPT_UMBRELLA, ARG_ONE, \"[=<optspec>]\",
        gettext_noop(\"Send Cisco Umbrella identifiers including remote IP.\"), NULL
        },\n  { LOPT_QUIET_TFTP, OPT_QUIET_TFTP, NULL, gettext_noop(\"Do not log routine
        TFTP.\"), NULL },\n  { LOPT_NORR, OPT_NORR, NULL, gettext_noop(\"Suppress
        round-robin ordering of DNS records.\"), NULL },\n  { LOPT_NO_ENCODE, OPT_NO_0x20,
        NULL, gettext_noop(\"Suppress DNS bit 0x20 encoding.\"), NULL },\n  { LOPT_DO_ENCODE,
        OPT_DO_0x20, NULL, gettext_noop(\"Enable DNS bit 0x20 encoding.\"), NULL },\n
        \ { LOPT_NO_IDENT, OPT_NO_IDENT, NULL, gettext_noop(\"Do not add CHAOS TXT
        records.\"), NULL },\n  { LOPT_CACHE_RR, ARG_DUP, \"<RR-type>\", gettext_noop(\"Cache
        this DNS resource record type.\"), NULL },\n  { LOPT_MAX_PROCS, ARG_ONE, \"<integer>\",
        gettext_noop(\"Maximum number of concurrent tcp connections.\"), NULL },\n
        \ { 0, 0, NULL, NULL, NULL }\n}"
      pos:
        line_end: 413
        line_start: 407
        source_file: /src/dnsmasq/src/option.c
    - fields:
      - name: handle
        type: char
      - name: val
        type: int
      item_type: struct
      name: "tab[] = {\n    { '$', CACHESIZ },\n    { '*', EDNS_PKTSZ },\n    { '&',
        MAXLEASES },\n    { '!', FTABSIZ },\n    { '#', TFTP_MAX_CONNECTIONS },\n
        \   { '\\0', 0 }\n  }"
      pos:
        line_end: 825
        line_start: 822
        source_file: /src/dnsmasq/src/option.c
    - fields:
      - name: '*name'
        type: char
      - name: '*next'
        type: struct list
      item_type: struct
      name: list
      pos:
        line_end: 2077
        line_start: 2074
        source_file: /src/dnsmasq/src/option.c
    - fields:
      - name: dev
        type: dev_t
      - name: ino
        type: ino_t
      - name: '*next'
        type: struct fileread
      item_type: struct
      name: fileread
      pos:
        line_end: 5602
        line_start: 5598
        source_file: /src/dnsmasq/src/option.c
    typedefs: []
    union: []
- function_names:
  - NL_ALIGN
  - add_attr
  - ipset_init
  - new_add_to_ipset
  - old_add_to_ipset
  - add_to_ipset
  source_file: /src/dnsmasq/src/ipset.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NFNL_SUBSYS_IPSET
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '6'
    - item_type: preproc_def
      name: IPSET_ATTR_DATA
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '7'
    - item_type: preproc_def
      name: IPSET_ATTR_IP
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '1'
    - item_type: preproc_def
      name: IPSET_ATTR_IPADDR_IPV4
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '1'
    - item_type: preproc_def
      name: IPSET_ATTR_IPADDR_IPV6
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '2'
    - item_type: preproc_def
      name: IPSET_ATTR_PROTOCOL
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '1'
    - item_type: preproc_def
      name: IPSET_ATTR_SETNAME
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '2'
    - item_type: preproc_def
      name: IPSET_CMD_ADD
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '9'
    - item_type: preproc_def
      name: IPSET_CMD_DEL
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '10'
    - item_type: preproc_def
      name: IPSET_MAXNAMELEN
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '32'
    - item_type: preproc_def
      name: IPSET_PROTOCOL
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '6'
    - item_type: preproc_def
      name: NFNETLINK_V0
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '0'
    - item_type: preproc_def
      name: NLA_F_NESTED
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: (1 << 15)
    - item_type: preproc_def
      name: NLA_F_NET_BYTEORDER
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: (1 << 14)
    - item_type: preproc_def
      name: BUFF_SZ
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/ipset.c
      type_or_value: '256'
    structs:
    - fields:
      - name: nla_len
        type: __u16
      - name: nla_type
        type: __u16
      item_type: struct
      name: my_nlattr
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/dnsmasq/src/ipset.c
    - fields:
      - name: nfgen_family
        type: __u8
      - name: version
        type: __u8
      - name: res_id
        type: __be16
      item_type: struct
      name: my_nfgenmsg
      pos:
        line_end: 64
        line_start: 60
        source_file: /src/dnsmasq/src/ipset.c
    - fields:
      - name: op
        type: unsigned
      - name: version
        type: unsigned
      - name: set
        type: "union {\n      char name[IPSET_MAXNAMELEN];\n      uint16_t index;\n
          \   }"
      - name: typename[IPSET_MAXNAMELEN]
        type: char
      item_type: struct
      name: ip_set_req_adt_get
      pos:
        line_end: 161
        line_start: 153
        source_file: /src/dnsmasq/src/ipset.c
    - fields:
      - name: op
        type: unsigned
      - name: index
        type: uint16_t
      - name: ip
        type: uint32_t
      item_type: struct
      name: ip_set_req_adt
      pos:
        line_end: 166
        line_start: 162
        source_file: /src/dnsmasq/src/ipset.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dnsmasq/src/dhcp6-protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DHCPV6_SERVER_PORT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '547'
    - item_type: preproc_def
      name: DHCPV6_CLIENT_PORT
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '546'
    - item_type: preproc_def
      name: ALL_SERVERS
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '"FF05::1:3"'
    - item_type: preproc_def
      name: ALL_RELAY_AGENTS_AND_SERVERS
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '"FF02::1:2"'
    - item_type: preproc_def
      name: DHCP6SOLICIT
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DHCP6ADVERTISE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: DHCP6REQUEST
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: DHCP6CONFIRM
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: DHCP6RENEW
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: DHCP6REBIND
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: DHCP6REPLY
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: DHCP6RELEASE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: DHCP6DECLINE
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: DHCP6RECONFIGURE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '10'
    - item_type: preproc_def
      name: DHCP6IREQ
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '11'
    - item_type: preproc_def
      name: DHCP6RELAYFORW
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: DHCP6RELAYREPL
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '13'
    - item_type: preproc_def
      name: OPTION6_CLIENT_ID
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: OPTION6_SERVER_ID
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: OPTION6_IA_NA
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: OPTION6_IA_TA
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: OPTION6_IAADDR
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: OPTION6_ORO
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: OPTION6_PREFERENCE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: OPTION6_ELAPSED_TIME
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: OPTION6_RELAY_MSG
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: OPTION6_AUTH
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '11'
    - item_type: preproc_def
      name: OPTION6_UNICAST
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: OPTION6_STATUS_CODE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '13'
    - item_type: preproc_def
      name: OPTION6_RAPID_COMMIT
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '14'
    - item_type: preproc_def
      name: OPTION6_USER_CLASS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '15'
    - item_type: preproc_def
      name: OPTION6_VENDOR_CLASS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '16'
    - item_type: preproc_def
      name: OPTION6_VENDOR_OPTS
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '17'
    - item_type: preproc_def
      name: OPTION6_INTERFACE_ID
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '18'
    - item_type: preproc_def
      name: OPTION6_RECONFIGURE_MSG
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '19'
    - item_type: preproc_def
      name: OPTION6_RECONF_ACCEPT
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '20'
    - item_type: preproc_def
      name: OPTION6_DNS_SERVER
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '23'
    - item_type: preproc_def
      name: OPTION6_DOMAIN_SEARCH
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '24'
    - item_type: preproc_def
      name: OPTION6_IA_PD
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '25'
    - item_type: preproc_def
      name: OPTION6_IAPREFIX
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '26'
    - item_type: preproc_def
      name: OPTION6_REFRESH_TIME
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '32'
    - item_type: preproc_def
      name: OPTION6_REMOTE_ID
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '37'
    - item_type: preproc_def
      name: OPTION6_SUBSCRIBER_ID
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '38'
    - item_type: preproc_def
      name: OPTION6_FQDN
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '39'
    - item_type: preproc_def
      name: OPTION6_NTP_SERVER
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '56'
    - item_type: preproc_def
      name: OPTION6_CLIENT_MAC
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '79'
    - item_type: preproc_def
      name: OPTION6_MUD_URL
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '112'
    - item_type: preproc_def
      name: NTP_SUBOPTION_SRV_ADDR
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: NTP_SUBOPTION_MC_ADDR
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: NTP_SUBOPTION_SRV_FQDN
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: DHCP6SUCCESS
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '0'
    - item_type: preproc_def
      name: DHCP6UNSPEC
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DHCP6NOADDRS
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: DHCP6NOBINDING
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: DHCP6NOTONLINK
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: DHCP6USEMULTI
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/dnsmasq/src/dhcp6-protocol.h
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - loop_send_probes
  - loop_make_probe
  - detect_loop
  source_file: /src/dnsmasq/src/loop.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - slaac_add_addrs
  - periodic_slaac
  - slaac_ping_reply
  source_file: /src/dnsmasq/src/slaac.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - indextoname
  - indextoname
  - indextoname
  - iface_check
  - loopback_exception
  - label_exception
  - iface_allowed
  - iface_allowed_v6
  - iface_allowed_v4
  - clean_interfaces
  - release_listener
  - enumerate_interfaces
  - fix_fd
  - make_sock
  - set_ipv6pktinfo
  - tcp_interface
  - create_listeners
  - create_wildcard_listeners
  - find_listener
  - create_bound_listeners
  - warn_bound_listeners
  - warn_wild_labels
  - warn_int_names
  - is_dad_listeners
  - join_multicast
  - local_bind
  - allocate_sfd
  - pre_allocate_sfds
  - check_servers
  - reload_servers
  - newaddress
  source_file: /src/dnsmasq/src/network.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LIFC_UNDER_IPMP
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dnsmasq/src/network.c
      type_or_value: '0'
    - item_type: preproc_def
      name: PKTOPTIONS
      pos:
        line_end: 1060
        line_start: 1059
        source_file: /src/dnsmasq/src/network.c
      type_or_value: IPV6_2292PKTOPTIONS
    - item_type: preproc_def
      name: PKTOPTIONS
      pos:
        line_end: 1062
        line_start: 1061
        source_file: /src/dnsmasq/src/network.c
      type_or_value: IPV6_PKTOPTIONS
    structs:
    - fields:
      - name: '*spare'
        type: struct addrlist
      - name: fd
        type: int
      item_type: struct
      name: iface_param
      pos:
        line_end: 236
        line_start: 233
        source_file: /src/dnsmasq/src/network.c
    typedefs: []
    union:
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 1043
        line_start: 1040
        source_file: /src/dnsmasq/src/network.c
    - fields:
      - name: '*c'
        type: unsigned char
      - name: '*p'
        type: struct in6_pktinfo
      item_type: union
      name: p
      pos:
        line_end: 1074
        line_start: 1071
        source_file: /src/dnsmasq/src/network.c
- function_names:
  - main
  - sig_handler
  - send_alarm
  - queue_event
  - send_event
  - read_event
  - fatal_event
  - async_event
  - poll_resolv
  - clear_cache_and_reload
  - set_tftp_listeners
  - set_dns_listeners
  - check_dns_listeners
  - do_tcp_connection
  - swap_to_tcp
  - make_icmp_sock
  - icmp_ping
  - delay_dhcp
  source_file: /src/dnsmasq/src/dnsmasq.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ip
        type: struct ip
      - name: icmp
        type: struct icmp
      item_type: struct
      name: packet
      pos:
        line_end: 2301
        line_start: 2298
        source_file: /src/dnsmasq/src/dnsmasq.c
    - fields:
      - name: ip
        type: struct ip
      - name: icmp
        type: struct icmp
      item_type: struct
      name: packet
      pos:
        line_end: 2413
        line_start: 2410
        source_file: /src/dnsmasq/src/dnsmasq.c
    typedefs: []
    union: []
- function_names:
  - MIN_VERSION
  - null_hash_init
  - null_hash_update
  - null_hash_digest
  - hash_init
  - dnsmasq_rsa_verify
  - dnsmasq_ecdsa_verify
  - nettle_get_secp_256r1
  - nettle_get_secp_384r1
  - dnsmasq_gostdsa_verify
  - dnsmasq_eddsa_verify
  - "(*verify_func(int algo))(struct blockdata *key_data, unsigned int key_len, unsigned
    char *sig, size_t sig_len,\n\t\t\t     unsigned char *digest, size_t digest_len,
    int algo)"
  - verify
  - ds_digest_name
  - algo_digest_name
  - nsec3_digest_name
  - hash_find
  source_file: /src/dnsmasq/src/crypto.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NETTLE_VERSION_MAJOR
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/crypto.c
      type_or_value: '2'
    - item_type: preproc_def
      name: NETTLE_VERSION_MINOR
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/crypto.c
      type_or_value: '0'
    - item_type: preproc_def
      name: BUFF_INCR
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/src/crypto.c
      type_or_value: '128'
    structs:
    - fields:
      - name: '*buff'
        type: uint8_t
      - name: len
        type: size_t
      item_type: struct
      name: null_hash_digest
      pos:
        line_end: 53
        line_start: 49
        source_file: /src/dnsmasq/src/crypto.c
    - fields:
      - name: len
        type: size_t
      item_type: struct
      name: null_hash_ctx
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/dnsmasq/src/crypto.c
    typedefs: []
    union: []
- function_names:
  - add_blocks
  - blockdata_init
  - blockdata_report
  - new_block
  - blockdata_alloc_real
  - blockdata_alloc
  - blockdata_expand
  - blockdata_free
  - blockdata_retrieve
  - blockdata_write
  - blockdata_read
  source_file: /src/dnsmasq/src/blockdata.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fd_search
  - poll_reset
  - do_poll
  - poll_check
  - poll_listen
  source_file: /src/dnsmasq/src/poll.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dhcp_common_init
  - recv_dhcp_packet
  - match_netid_wild
  - run_tag_if
  - pxe_ok
  - option_filter
  - match_netid
  - strip_hostname
  - log_tags
  - match_bytes
  - config_has_mac
  - is_config_in_context
  - find_config_match
  - find_config
  - whichdevice
  - bindtodevice
  - bind_dhcp_devices
  - display_opts
  - display_opts6
  - lookup_dhcp_opt
  - lookup_dhcp_len
  - option_string
  - log_context
  - log_relay
  source_file: /src/dnsmasq/src/dhcp-common.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: val
        type: u16
      item_type: struct
      name: opttab_t
      pos:
        line_end: 640
        line_start: 637
        source_file: /src/dnsmasq/src/dhcp-common.c
    typedefs: []
    union: []
- function_names:
  - find_addrlist
  - find_subnet
  - find_exclude
  - filter_zone
  - in_zone
  - answer_auth
  source_file: /src/dnsmasq/src/auth.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UNUSED
  - pfr_strerror
  - ipset_init
  - add_to_ipset
  source_file: /src/dnsmasq/src/tables.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ubus_subscribe_cb
  - ubus_destroy
  - ubus_disconnect_cb
  - ubus_init
  - set_ubus_listeners
  - check_ubus_listeners
  - CHECK
  - ubus_handle_metrics
  - ubus_handle_set_connmark_allowlist
  - __blob_for_each_attr
  - __blob_for_each_attr
  - CHECK
  - ubus_event_bcast
  - ubus_event_bcast_connmark_allowlist_refused
  - ubus_event_bcast_connmark_allowlist_resolved
  source_file: /src/dnsmasq/src/ubus.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/dnsmasq/src/dhcp-protocol.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DHCP_SERVER_PORT
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '67'
    - item_type: preproc_def
      name: DHCP_CLIENT_PORT
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '68'
    - item_type: preproc_def
      name: DHCP_SERVER_ALTPORT
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1067'
    - item_type: preproc_def
      name: DHCP_CLIENT_ALTPORT
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1068'
    - item_type: preproc_def
      name: PXE_PORT
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '4011'
    - item_type: preproc_def
      name: DHCP_BUFF_SZ
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '256'
    - item_type: preproc_def
      name: BOOTREQUEST
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: BOOTREPLY
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: DHCP_COOKIE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '0x63825363'
    - item_type: preproc_def
      name: MIN_PACKETSZ
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '300'
    - item_type: preproc_def
      name: OPTION_PAD
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '0'
    - item_type: preproc_def
      name: OPTION_NETMASK
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: OPTION_ROUTER
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: OPTION_DNSSERVER
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: OPTION_HOSTNAME
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: OPTION_DOMAINNAME
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '15'
    - item_type: preproc_def
      name: OPTION_BROADCAST
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '28'
    - item_type: preproc_def
      name: OPTION_VENDOR_CLASS_OPT
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '43'
    - item_type: preproc_def
      name: OPTION_REQUESTED_IP
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '50 '
    - item_type: preproc_def
      name: OPTION_LEASE_TIME
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '51'
    - item_type: preproc_def
      name: OPTION_OVERLOAD
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '52'
    - item_type: preproc_def
      name: OPTION_MESSAGE_TYPE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '53'
    - item_type: preproc_def
      name: OPTION_SERVER_IDENTIFIER
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '54'
    - item_type: preproc_def
      name: OPTION_REQUESTED_OPTIONS
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '55'
    - item_type: preproc_def
      name: OPTION_MESSAGE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '56'
    - item_type: preproc_def
      name: OPTION_MAXMESSAGE
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '57'
    - item_type: preproc_def
      name: OPTION_T1
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '58'
    - item_type: preproc_def
      name: OPTION_T2
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '59'
    - item_type: preproc_def
      name: OPTION_VENDOR_ID
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '60'
    - item_type: preproc_def
      name: OPTION_CLIENT_ID
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '61'
    - item_type: preproc_def
      name: OPTION_SNAME
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '66'
    - item_type: preproc_def
      name: OPTION_FILENAME
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '67'
    - item_type: preproc_def
      name: OPTION_USER_CLASS
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '77'
    - item_type: preproc_def
      name: OPTION_RAPID_COMMIT
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '80'
    - item_type: preproc_def
      name: OPTION_CLIENT_FQDN
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '81'
    - item_type: preproc_def
      name: OPTION_AGENT_ID
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '82'
    - item_type: preproc_def
      name: OPTION_LAST_TRANSACTION
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '91'
    - item_type: preproc_def
      name: OPTION_ASSOCIATED_IP
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '92'
    - item_type: preproc_def
      name: OPTION_ARCH
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '93'
    - item_type: preproc_def
      name: OPTION_PXE_UUID
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '97'
    - item_type: preproc_def
      name: OPTION_SUBNET_SELECT
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '118'
    - item_type: preproc_def
      name: OPTION_DOMAIN_SEARCH
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '119'
    - item_type: preproc_def
      name: OPTION_SIP_SERVER
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '120'
    - item_type: preproc_def
      name: OPTION_VENDOR_IDENT
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '124'
    - item_type: preproc_def
      name: OPTION_VENDOR_IDENT_OPT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '125'
    - item_type: preproc_def
      name: OPTION_MUD_URL_V4
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '161'
    - item_type: preproc_def
      name: OPTION_END
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '255'
    - item_type: preproc_def
      name: SUBOPT_CIRCUIT_ID
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SUBOPT_REMOTE_ID
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: SUBOPT_SUBNET_SELECT
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '5     '
    - item_type: preproc_def
      name: SUBOPT_SUBSCR_ID
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '6     '
    - item_type: preproc_def
      name: SUBOPT_SERVER_OR
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '11    '
    - item_type: preproc_def
      name: SUBOPT_PXE_BOOT_ITEM
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '71    '
    - item_type: preproc_def
      name: SUBOPT_PXE_DISCOVERY
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: SUBOPT_PXE_SERVERS
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: SUBOPT_PXE_MENU
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: SUBOPT_PXE_MENU_PROMPT
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '10'
    - item_type: preproc_def
      name: DHCPDISCOVER
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DHCPOFFER
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '2'
    - item_type: preproc_def
      name: DHCPREQUEST
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '3'
    - item_type: preproc_def
      name: DHCPDECLINE
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '4'
    - item_type: preproc_def
      name: DHCPACK
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '5'
    - item_type: preproc_def
      name: DHCPNAK
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '6'
    - item_type: preproc_def
      name: DHCPRELEASE
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '7'
    - item_type: preproc_def
      name: DHCPINFORM
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '8'
    - item_type: preproc_def
      name: DHCPFORCERENEW
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '9'
    - item_type: preproc_def
      name: DHCPLEASEQUERY
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '10'
    - item_type: preproc_def
      name: DHCPLEASEUNASSIGNED
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '11'
    - item_type: preproc_def
      name: DHCPLEASEUNKNOWN
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: DHCPLEASEACTIVE
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '13'
    - item_type: preproc_def
      name: BRDBAND_FORUM_IANA
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '3561 '
    - item_type: preproc_def
      name: DHCP_CHADDR_MAX
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/dnsmasq/src/dhcp-protocol.h
      type_or_value: '16'
    structs:
    - fields:
      - name: op
        type: u8
      - name: xid
        type: u32
      - name: secs
        type: u16
      - name: ciaddr
        type: struct in_addr
      - name: chaddr[DHCP_CHADDR_MAX]
        type: u8
      - name: options[312]
        type: u8
      item_type: struct
      name: dhcp_packet
      pos:
        line_end: 108
        line_start: 101
        source_file: /src/dnsmasq/src/dhcp-protocol.h
    typedefs: []
    union: []
- function_names:
  - rrtype
  - next_uid
  - cache_init
  - rehash
  - hash_bucket
  - cache_hash
  - cache_blockdata_free
  - cache_free
  - cache_link
  - cache_unlink
  - cache_get_name
  - cache_get_cname_target
  - cache_enumerate
  - is_outdated_cname_pointer
  - is_expired
  - cache_remove_uid
  - cache_scan_free
  - cache_start_insert
  - cache_insert
  - really_insert
  - cache_end_insert
  - if
  - if
  - cache_update_hwm
  - cache_send_ipset
  - cache_recv_insert
  - if
  - if
  - cache_find_non_terminal
  - cache_find_by_name
  - cache_find_by_addr
  - add_hosts_entry
  - eatspace
  - gettok
  - read_hostsfile
  - cache_reload
  - a_record_from_hosts
  - cache_unhash_dhcp
  - cache_add_dhcp_entry
  - make_non_terminals
  - cache_make_stat
  - sanitise
  - dump_cache_entry
  - dump_cache
  - record_source
  - querystr
  - edestr
  - log_query
  source_file: /src/dnsmasq/src/cache.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: unsigned int
      - name: '* const name'
        type: char
      item_type: struct
      name: "typestr[] = {\n  { 1,   \"A\" }, /* a host address [RFC1035] */\n  {
        2,   \"NS\" }, /* an authoritative name server [RFC1035] */\n  { 3,   \"MD\"
        }, /* a mail destination (OBSOLETE - use MX) [RFC1035] */\n  { 4,   \"MF\"
        }, /* a mail forwarder (OBSOLETE - use MX) [RFC1035] */\n  { 5,   \"CNAME\"
        }, /* the canonical name for an alias [RFC1035] */\n  { 6,   \"SOA\" }, /*
        marks the start of a zone of authority [RFC1035] */\n  { 7,   \"MB\" }, /*
        a mailbox domain name (EXPERIMENTAL) [RFC1035] */\n  { 8,   \"MG\" }, /* a
        mail group member (EXPERIMENTAL) [RFC1035] */\n  { 9,   \"MR\" }, /* a mail
        rename domain name (EXPERIMENTAL) [RFC1035] */\n  { 10,  \"NULL\" }, /* a
        null RR (EXPERIMENTAL) [RFC1035] */\n  { 11,  \"WKS\" }, /* a well known service
        description [RFC1035] */\n  { 12,  \"PTR\" }, /* a domain name pointer [RFC1035]
        */\n  { 13,  \"HINFO\" }, /* host information [RFC1035] */\n  { 14,  \"MINFO\"
        }, /* mailbox or mail list information [RFC1035] */\n  { 15,  \"MX\" }, /*
        mail exchange [RFC1035] */\n  { 16,  \"TXT\" }, /* text strings [RFC1035]
        */\n  { 17,  \"RP\" }, /* for Responsible Person [RFC1183] */\n  { 18,  \"AFSDB\"
        }, /* for AFS Data Base location [RFC1183][RFC5864] */\n  { 19,  \"X25\" },
        /* for X.25 PSDN address [RFC1183] */\n  { 20,  \"ISDN\" }, /* for ISDN address
        [RFC1183] */\n  { 21,  \"RT\" }, /* for Route Through [RFC1183] */\n  { 22,
        \ \"NSAP\" }, /* for NSAP address, NSAP style A record [RFC1706] */\n  { 23,
        \ \"NSAP_PTR\" }, /* for domain name pointer, NSAP style [RFC1348][RFC1637][RFC1706]
        */\n  { 24,  \"SIG\" }, /* for security signature [RFC2535][RFC2536][RFC2537][RFC2931][RFC3008][RFC3110][RFC3755][RFC4034]
        */\n  { 25,  \"KEY\" }, /* for security key [RFC2535][RFC2536][RFC2537][RFC2539][RFC3008][RFC3110][RFC3755][RFC4034]
        */\n  { 26,  \"PX\" }, /* X.400 mail mapping information [RFC2163] */\n  {
        27,  \"GPOS\" }, /* Geographical Position [RFC1712] */\n  { 28,  \"AAAA\"
        }, /* IP6 Address [RFC3596] */\n  { 29,  \"LOC\" }, /* Location Information
        [RFC1876] */\n  { 30,  \"NXT\" }, /* Next Domain (OBSOLETE) [RFC2535][RFC3755]
        */\n  { 31,  \"EID\" }, /* Endpoint Identifier [Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt]
        1995-06*/\n  { 32,  \"NIMLOC\" }, /* Nimrod Locator [1][Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt]
        1995-06*/\n  { 33,  \"SRV\" }, /* Server Selection [1][RFC2782] */\n  { 34,
        \ \"ATMA\" }, /* ATM Address [ ATM Forum Technical Committee, \"ATM Name System,
        V2.0\", Doc ID: AF-DANS-0152.000, July 2000. Available from and held in escrow
        by IANA.] */\n  { 35,  \"NAPTR\" }, /* Naming Authority Pointer [RFC2168][RFC2915][RFC3403]
        */\n  { 36,  \"KX\" }, /* Key Exchanger [RFC2230] */\n  { 37,  \"CERT\" },
        /* CERT [RFC4398] */\n  { 38,  \"A6\" }, /* A6 (OBSOLETE - use AAAA) [RFC2874][RFC3226][RFC6563]
        */\n  { 39,  \"DNAME\" }, /* DNAME [RFC6672] */\n  { 40,  \"SINK\" }, /* SINK
        [Donald_E_Eastlake][http://tools.ietf.org/html/draft-eastlake-kitchen-sink]
        1997-11*/\n  { 41,  \"OPT\" }, /* OPT [RFC3225][RFC6891] */\n  { 42,  \"APL\"
        }, /* APL [RFC3123] */\n  { 43,  \"DS\" }, /* Delegation Signer [RFC3658][RFC4034]
        */\n  { 44,  \"SSHFP\" }, /* SSH Key Fingerprint [RFC4255] */\n  { 45,  \"IPSECKEY\"
        }, /* IPSECKEY [RFC4025] */\n  { 46,  \"RRSIG\" }, /* RRSIG [RFC3755][RFC4034]
        */\n  { 47,  \"NSEC\" }, /* NSEC [RFC3755][RFC4034][RFC9077] */\n  { 48,  \"DNSKEY\"
        }, /* DNSKEY [RFC3755][RFC4034] */\n  { 49,  \"DHCID\" }, /* DHCID [RFC4701]
        */\n  { 50,  \"NSEC3\" }, /* NSEC3 [RFC5155][RFC9077] */\n  { 51,  \"NSEC3PARAM\"
        }, /* NSEC3PARAM [RFC5155] */\n  { 52,  \"TLSA\" }, /* TLSA [RFC6698] */\n
        \ { 53,  \"SMIMEA\" }, /* S/MIME cert association [RFC8162] SMIMEA/smimea-completed-template
        2015-12-01*/\n  { 55,  \"HIP\" }, /* Host Identity Protocol [RFC8005] */\n
        \ { 56,  \"NINFO\" }, /* NINFO [Jim_Reid] NINFO/ninfo-completed-template 2008-01-21*/\n
        \ { 57,  \"RKEY\" }, /* RKEY [Jim_Reid] RKEY/rkey-completed-template 2008-01-21*/\n
        \ { 58,  \"TALINK\" }, /* Trust Anchor LINK [Wouter_Wijngaards] TALINK/talink-completed-template
        2010-02-17*/\n  { 59,  \"CDS\" }, /* Child DS [RFC7344] CDS/cds-completed-template
        2011-06-06*/\n  { 60,  \"CDNSKEY\" }, /* DNSKEY(s) the Child wants reflected
        in DS [RFC7344] 2014-06-16*/\n  { 61,  \"OPENPGPKEY\" }, /* OpenPGP Key [RFC7929]
        OPENPGPKEY/openpgpkey-completed-template 2014-08-12*/\n  { 62,  \"CSYNC\"
        }, /* Child-To-Parent Synchronization [RFC7477] 2015-01-27*/\n  { 63,  \"ZONEMD\"
        }, /* Message Digest Over Zone Data [RFC8976] ZONEMD/zonemd-completed-template
        2018-12-12*/\n  { 64,  \"SVCB\" }, /* Service Binding [draft-ietf-dnsop-svcb-https-00]
        SVCB/svcb-completed-template 2020-06-30*/\n  { 65,  \"HTTPS\" }, /* HTTPS
        Binding [draft-ietf-dnsop-svcb-https-00] HTTPS/https-completed-template 2020-06-30*/\n
        \ { 66,  \"DSYNC\" }, /* Endpoint discovery for delegation synchronization
        [draft-ietf-dnsop-generalized-notify-03] DSYNC/dsync-completed-template 2024-12-10
        */\n  { 67,  \"HHIT\" }, /* [draft-ietf-drip-registries-28] */\n  { 68,  \"BRID\"
        }, /* [draft-ietf-drip-registries-28] */\n  { 99,  \"SPF\" }, /* [RFC7208]
        */\n  { 100, \"UINFO\" }, /* [IANA-Reserved] */\n  { 101, \"UID\" }, /* [IANA-Reserved]
        */\n  { 102, \"GID\" }, /* [IANA-Reserved] */\n  { 103, \"UNSPEC\" }, /* [IANA-Reserved]
        */\n  { 104, \"NID\" }, /* [RFC6742] ILNP/nid-completed-template */\n  { 105,
        \"L32\" }, /* [RFC6742] ILNP/l32-completed-template */\n  { 106, \"L64\" },
        /* [RFC6742] ILNP/l64-completed-template */\n  { 107, \"LP\" }, /* [RFC6742]
        ILNP/lp-completed-template */\n  { 108, \"EUI48\" }, /* an EUI-48 address
        [RFC7043] EUI48/eui48-completed-template 2013-03-27*/\n  { 109, \"EUI64\"
        }, /* an EUI-64 address [RFC7043] EUI64/eui64-completed-template 2013-03-27*/\n
        \ { 128, \"NXNAME\" }, /* NXDOMAIN indicator for Compact Denial of Existence
        https://www.iana.org/go/draft-ietf-dnsop-compact-denial-of-existence-04 */\n
        \ { 249, \"TKEY\" }, /* Transaction Key [RFC2930] */\n  { 250, \"TSIG\" },
        /* Transaction Signature [RFC8945] */\n  { 251, \"IXFR\" }, /* incremental
        transfer [RFC1995] */\n  { 252, \"AXFR\" }, /* transfer of an entire zone
        [RFC1035][RFC5936] */\n  { 253, \"MAILB\" }, /* mailbox-related RRs (MB, MG
        or MR) [RFC1035] */\n  { 254, \"MAILA\" }, /* mail agent RRs (OBSOLETE - see
        MX) [RFC1035] */\n  { 255, \"ANY\" }, /* A request for some or all records
        the server has available [RFC1035][RFC6895][RFC8482] */\n  { 256, \"URI\"
        }, /* URI [RFC7553] URI/uri-completed-template 2011-02-22*/\n  { 257, \"CAA\"
        }, /* Certification Authority Restriction [RFC8659] CAA/caa-completed-template
        2011-04-07*/\n  { 258, \"AVC\" }, /* Application Visibility and Control [Wolfgang_Riedel]
        AVC/avc-completed-template 2016-02-26*/\n  { 259, \"DOA\" }, /* Digital Object
        Architecture [draft-durand-doa-over-dns] DOA/doa-completed-template 2017-08-30*/\n
        \ { 260, \"AMTRELAY\" }, /* Automatic Multicast Tunneling Relay [RFC8777]
        AMTRELAY/amtrelay-completed-template 2019-02-06*/\n  { 261, \"RESINFO\" },
        /* Resolver Information as Key/Value Pairs https://datatracker.ietf.org/doc/draft-ietf-add-resolver-info/06/
        */\n  { 262, \"WALLET\" }, /* Public wallet address https://www.iana.org/assignments/dns-parameters/WALLET/wallet-completed-template
        */\n  { 263, \"CLA\" }, /*  BP Convergence Layer Adapter https://www.iana.org/go/draft-johnson-dns-ipn-cla-07
        */\n  { 264, \"IPN\" }, /* BP Node Number https://www.iana.org/go/draft-johnson-dns-ipn-cla-07
        */\n  { 32768,  \"TA\" }, /* DNSSEC Trust Authorities [Sam_Weiler][http://cameo.library.cmu.edu/][
        Deploying DNSSEC Without a Signed Root. Technical Report 1999-19, Information
        Networking Institute, Carnegie Mellon University, April 2004.] 2005-12-13*/\n
        \ { 32769,  \"DLV\" }, /* DNSSEC Lookaside Validation (OBSOLETE) [RFC8749][RFC4431]
        */\n}"
      pos:
        line_end: 38
        line_start: 35
        source_file: /src/dnsmasq/src/cache.c
    typedefs: []
    union: []
- function_names:
  - option_len
  - option_ptr
  - GETSHORT
  - GETLONG
  - PUTSHORT
  - PUTLONG
  - lookup_dhcp_opt
  - option_string
  - prettyprint_time
  - print_mac
  - dhcp_skip_opts
  - dhcp_find_opt
  - option_put
  - option_put_string
  - parse_hex
  - split_chr
  - split
  - main
  source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INADDRSZ
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '4'
    - item_type: preproc_def
      name: ADDRSTRLEN
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '46'
    - item_type: preproc_def
      name: DHCP_CHADDR_MAX
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '16'
    - item_type: preproc_def
      name: DHCP_SERVER_PORT
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '67'
    - item_type: preproc_def
      name: DHCP_CLIENT_PORT
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '68'
    - item_type: preproc_def
      name: BOOTREQUEST
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '1'
    - item_type: preproc_def
      name: BOOTREPLY
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '2'
    - item_type: preproc_def
      name: DHCP_COOKIE
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x63825363'
    - item_type: preproc_def
      name: DHCPLEASEQUERY
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '10'
    - item_type: preproc_def
      name: DHCPLEASEUNASSIGNED
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '11'
    - item_type: preproc_def
      name: DHCPLEASEUNKNOWN
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '12'
    - item_type: preproc_def
      name: DHCPLEASEACTIVE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '13'
    - item_type: preproc_def
      name: OPTION_END
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '255'
    - item_type: preproc_def
      name: OPTION_ROUTER
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '3'
    - item_type: preproc_def
      name: OPTION_VENDOR_CLASS_OPT
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '43'
    - item_type: preproc_def
      name: OPTION_LEASE_TIME
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '51'
    - item_type: preproc_def
      name: OPTION_MESSAGE_TYPE
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '53'
    - item_type: preproc_def
      name: OPTION_SERVER_IDENTIFIER
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '54'
    - item_type: preproc_def
      name: OPTION_REQUESTED_OPTIONS
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '55'
    - item_type: preproc_def
      name: OPTION_VENDOR_ID
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '60'
    - item_type: preproc_def
      name: OPTION_CLIENT_ID
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '61'
    - item_type: preproc_def
      name: OT_ADDR_LIST
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: OT_RFC1035_NAME
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: OT_INTERNAL
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x2000'
    - item_type: preproc_def
      name: OT_NAME
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x1000'
    - item_type: preproc_def
      name: OT_CSTRING
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x0800'
    - item_type: preproc_def
      name: OT_DEC
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x0400 '
    - item_type: preproc_def
      name: OT_TIME
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type_or_value: '0x0200'
    structs:
    - fields:
      - name: header
        type: "struct dhcp_packet {\n    unsigned char op, htype, hlen, hops;\n    unsigned
          int xid;\n    unsigned short secs, flags;\n    struct in_addr ciaddr, yiaddr,
          siaddr, giaddr;\n    unsigned char chaddr[DHCP_CHADDR_MAX], sname[64], file[128];\n
          \ }"
      - name: options[312]
        type: unsigned char
      item_type: struct
      name: dhcp_packet_with_opts
      pos:
        line_end: 133
        line_start: 124
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
    - fields:
      - name: op
        type: unsigned char
      - name: xid
        type: unsigned int
      - name: secs
        type: unsigned short
      - name: ciaddr
        type: struct in_addr
      - name: chaddr[DHCP_CHADDR_MAX]
        type: unsigned char
      item_type: struct
      name: dhcp_packet
      pos:
        line_end: 131
        line_start: 125
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
    - fields:
      - name: '*name'
        type: char
      - name: val
        type: u16
      item_type: struct
      name: opttab_t
      pos:
        line_end: 138
        line_start: 135
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type: unsigned char
    - item_type: typedef
      name: u16
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type: unsigned short
    - item_type: typedef
      name: u32
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type: unsigned int
    - item_type: typedef
      name: u64
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
      type: unsigned long long
    union:
    - fields:
      - name: addr4
        type: struct in_addr
      - name: addr6
        type: struct in6_addr
      item_type: union
      name: all_addr
      pos:
        line_end: 122
        line_start: 119
        source_file: /src/dnsmasq/contrib/leasequery/leasequery.c
- function_names:
  - expand_buf
  - netlink_recv
  - parse_hex
  - is_same_net
  - find_interface
  - main
  source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DHCP_CHADDR_MAX
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '16'
    - item_type: preproc_def
      name: BOOTREQUEST
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '1'
    - item_type: preproc_def
      name: DHCP_COOKIE
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '0x63825363'
    - item_type: preproc_def
      name: OPTION_SERVER_IDENTIFIER
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '54'
    - item_type: preproc_def
      name: OPTION_CLIENT_ID
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '61'
    - item_type: preproc_def
      name: OPTION_MESSAGE_TYPE
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '53'
    - item_type: preproc_def
      name: OPTION_END
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '255'
    - item_type: preproc_def
      name: DHCPRELEASE
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '7'
    - item_type: preproc_def
      name: DHCP_SERVER_PORT
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type_or_value: '67'
    structs:
    - fields:
      - name: op
        type: u8
      - name: xid
        type: u32
      - name: secs
        type: u16
      - name: ciaddr
        type: struct in_addr
      - name: chaddr[DHCP_CHADDR_MAX]
        type: u8
      - name: cookie
        type: u32
      - name: options[308]
        type: unsigned char
      item_type: struct
      name: dhcp_packet
      pos:
        line_end: 73
        line_start: 65
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    - fields:
      - name: nlh
        type: struct nlmsghdr
      - name: g
        type: struct rtgenmsg
      item_type: struct
      name: req
      pos:
        line_end: 189
        line_start: 186
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type: unsigned char
    - item_type: typedef
      name: u16
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type: unsigned short
    - item_type: typedef
      name: u32
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release.c
      type: unsigned int
    union: []
- function_names:
  - pack_duid
  - create_client_id_option
  - create_server_id_option
  - create_iaadr_option
  - create_iana_option
  - create_release_packet
  - parse_iana_suboption
  - parse_packet
  - usage
  - fail_fatal
  - send_release_packet
  - main
  source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
  types:
    enum:
    - enumerators:
      - name: SOLICIT
        value: '1'
      - name: ADVERTISE
        value: '2'
      - name: REQUEST
        value: '3'
      - name: CONFIRM
        value: '4'
      - name: RENEW
        value: '5'
      - name: REBIND
        value: '6'
      - name: REPLY
        value: '7'
      - name: RELEASE
        value: '8'
      - name: DECLINE
        value: '9'
      - name: RECONFIGURE
        value: '10'
      - name: RELAY_FORW
        value: '12'
      - name: INFORMATION_REQUEST
        value: '11'
      - name: RELAY_REPL
        value: '13'
      item_type: enum
      name: DHCP6_TYPES
      pos:
        line_end: 64
        line_start: 48
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    - enumerators:
      - name: IAADDR
        value: '5'
      - name: RELAY_MSG
        value: '9'
      - name: INTERFACE_ID
        value: '18'
      - name: RAPID_COMMIT
        value: '14'
      - name: SERVERID
        value: '2'
      - name: ORO
        value: '6'
      - name: AUTH
        value: '11'
      - name: RECONF_MSG
        value: '19'
      - name: USER_CLASS
        value: '15'
      - name: IA_NA
        value: '3'
      - name: PREFERENCE
        value: '7'
      - name: RECONF_ACCEPT
        value: '20'
      - name: VENDOR_CLASS
        value: '16'
      - name: UNICAST
        value: '12'
      - name: CLIENTID
        value: '1'
      - name: IA_TA
        value: '4'
      - name: ELAPSED_TIME
        value: '8'
      - name: VENDOR_OPTS
        value: '17'
      - name: STATUS_CODE
        value: '13'
      item_type: enum
      name: DHCP6_OPTIONS
      pos:
        line_end: 87
        line_start: 66
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    - enumerators:
      - name: SUCCESS
        value: '0'
      - name: NO_BINDING
        value: '3'
      - name: NOT_ON_LINK
        value: '4'
      - name: UNSPEC_FAIL
        value: '1'
      - name: NOADDR_AVAIL
        value: '2'
      - name: USE_MULTICAST
        value: '5'
      item_type: enum
      name: DHCP6_STATUSES
      pos:
        line_end: 97
        line_start: 89
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    preproc_defs:
    - item_type: preproc_def
      name: NOT_REPLY_CODE
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
      type_or_value: '115'
    structs:
    - fields:
      - name: type
        type: uint16_t
      - name: len
        type: uint16_t
      - name: value[1024]
        type: char
      item_type: struct
      name: dhcp6_option
      pos:
        line_end: 119
        line_start: 115
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    - fields:
      - name: type
        type: uint16_t
      - name: len
        type: uint16_t
      - name: ip
        type: struct in6_addr
      - name: preferred_lifetime
        type: uint32_t
      - name: valid_lifetime
        type: uint32_t
      item_type: struct
      name: dhcp6_iaaddr_option
      pos:
        line_end: 127
        line_start: 121
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    - fields:
      - name: type
        type: uint16_t
      - name: len
        type: uint16_t
      - name: iaid
        type: uint32_t
      - name: t1
        type: uint32_t
      - name: t2
        type: uint32_t
      - name: options[1024]
        type: char
      item_type: struct
      name: dhcp6_iana_option
      pos:
        line_end: 136
        line_start: 129
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    - fields:
      - name: len
        type: size_t
      - name: buf[2048]
        type: char
      item_type: struct
      name: dhcp6_packet
      pos:
        line_end: 142
        line_start: 139
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
      type: unsigned char
    - item_type: typedef
      name: u16
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
      type: unsigned short
    - item_type: typedef
      name: u32
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_release6.c
      type: unsigned int
    union: []
- function_names:
  - option_len
  - option_ptr
  - option_find1
  - option_find
  - option_uint
  - main
  source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DHCP_CHADDR_MAX
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '16'
    - item_type: preproc_def
      name: BOOTREQUEST
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '1'
    - item_type: preproc_def
      name: DHCP_COOKIE
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '0x63825363'
    - item_type: preproc_def
      name: OPTION_PAD
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '0'
    - item_type: preproc_def
      name: OPTION_LEASE_TIME
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '51'
    - item_type: preproc_def
      name: OPTION_OVERLOAD
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '52'
    - item_type: preproc_def
      name: OPTION_MESSAGE_TYPE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '53'
    - item_type: preproc_def
      name: OPTION_REQUESTED_OPTIONS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '55'
    - item_type: preproc_def
      name: OPTION_END
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '255'
    - item_type: preproc_def
      name: DHCPINFORM
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '8'
    - item_type: preproc_def
      name: DHCP_SERVER_PORT
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type_or_value: '67'
    structs:
    - fields:
      - name: op
        type: u8
      - name: xid
        type: u32
      - name: secs
        type: u16
      - name: ciaddr
        type: struct in_addr
      - name: chaddr[DHCP_CHADDR_MAX]
        type: u8
      - name: cookie
        type: u32
      - name: options[308]
        type: unsigned char
      item_type: struct
      name: dhcp_packet
      pos:
        line_end: 69
        line_start: 61
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type: unsigned char
    - item_type: typedef
      name: u16
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type: unsigned short
    - item_type: typedef
      name: u32
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/dnsmasq/contrib/lease-tools/dhcp_lease_time.c
      type: unsigned int
    union: []
